1. 程式人生 > 其它 >第三篇 hadoop安裝

第三篇 hadoop安裝

前期準備

需要把hadoop-2.7.3.tar.gz拷貝到/usr/local/src/目錄下,並進行解壓
進入到/usr/local/src/目錄下進行解壓命令

tar -zxvf hadoop-2.7.3.tar.gz
  • 進入到/usr/local/src/hadoop-2.7.3/etc/hadoop/目錄修改對應檔案
    core-site.xml檔案如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--關注微信公眾號:阿布的進擊-->
<!--檔案:core-site.xml -->
<!--參考地址 http://hadoop.apache.org/docs/r2.7.3/-->
<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
		<description>用來指定預設的檔案系統</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/usr/local/src/hadoop-2.7.3/tmp</value>
		<description>hadoop臨時檔案存放目錄</description>
	</property>
</configuration>

hdfs-site.xml檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--關注微信公眾號:阿布的進擊-->
<!--檔案:hdfs-site.xml -->
<!--參考地址 http://hadoop.apache.org/docs/r2.7.3/-->
<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>master:9001</value>
		<description>secondaryNamenode地址和埠</description>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/src/hadoop-2.7.3/dfs/name</value>
		<description>儲存FsImage映象的目錄,作用是存放hadoop的名稱節點namenode裡的metadata</description>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/local/src/hadoop-2.7.3/dfs/data</value>
		<description>存放HDFS檔案系統資料檔案的目錄,作用是存放hadoop的資料節點datanode裡的多個數據塊</description>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
		<description>block塊副本數,預設值3</description>
	</property>
</configuration>

mapred-site.xml檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--關注微信公眾號:阿布的進擊-->
<!--檔案:mapred-site.xml -->
<!--參考地址 http://hadoop.apache.org/docs/r2.7.3/-->
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>指定執行mapreduce的環境是yarn</description>
	</property>
	<!--hadoop歷史伺服器-->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>master:10020</value>
		<description>MR JobHistory伺服器程序間通訊地址</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>master:19888</value>
		<description>MR JobHistory伺服器的使用者介面地址</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.done-dir</name>
		<value>/mr-history/done</value>
		<description>已執行完畢作業資訊儲存位置</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.intermediate-done-dir</name>
		<value>/mr-history/tmp</value>
		<description>正在執行的作業資訊儲存位置</description>
	</property>
	<property>
		<name>yarn.app.mapreduce.am.staging-dir</name>
		<value>/mr-history/hadoop-yarn/</value>
		<description>MR作業在提交時所使用的臨時目錄, 是一個本地路徑</description>
	</property>
	<property>
		<name>mapreduce.map.memory.mb</name>
		<value>2048</value>
		<description>排程器為每個map task申請的記憶體數,各Job也可以單獨指定,如果實際使用的資源量超過該值,則會被強制殺死</description>
	</property>
	<property>
		<name>mapreduce.reduce.memory.mb</name>
		<value>2048</value>
		<description>排程器為每個reduce task申請的記憶體數,同map task,超出強制殺死</description>
	</property>
	<property>
		<name>mapreduce.job.reduce.slowstart.completedmaps</name>
		<value>0.8</value>
		<description>當map task完成80%時,為reduce申請資源,reduce開始進行拷貝map結果資料和做reduce shuffle操作,預設0.05</description>
	</property>
</configuration>

slaves檔案如下:

slave1
slave2

yarn-site.xml檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--關注微信公眾號:阿布的進擊-->
<!--檔案:yarn-site.xml -->
<!--參考地址 http://hadoop.apache.org/docs/r2.7.3/-->
<configuration>
	<!--日誌聚合相關-->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
		<description>開啟日誌聚合功能,開啟後日志保存在hdfs上</description>
	</property>
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>86400</value>
		<description>聚合後的日誌在hdfs上的儲存時間,單位為秒</description>
	</property>
	<property>
		<name>yarn.log.server.url</name>
		<value>http://master:19888/jobhistory/logs</value>
		<description>日誌聚合伺服器URL</description>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
		<description>NodeManager上執行的附屬服務,需配置成mapreduce_shuffle,才可執行MapReduce程式</description>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<property>
		<name>yarn.resourcemanager.address</name>
		<value>master:8032</value>
		<description>RM 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程式,殺死應用程式</description>
	</property>
	<property>
		<name>yarn.resourcemanager.scheduler.address</name>
		<value>master:8030</value>
		<description>RM 對ApplicationMaster暴露的訪問地址。AM通過該地址向RM申請資源、釋放資源</description>
	</property>
	<property>
		<name>yarn.resourcemanager.resource-tracker.address</name>
		<value>master:8035</value>
		<description>RM 對NodeManager暴露的地址,NM通過該地址向RM彙報心跳,領取任務</description>
	</property>
	<property>
		<name>yarn.resourcemanager.admin.address</name>
		<value>master:8033</value>
		<description>RM 對管理員暴露的訪問地址。管理員通過該地址向RM傳送管理命令等</description>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address</name>
		<value>master:8088</value>
		<description>RM對外web ui地址。使用者可通過該地址在瀏覽器中檢視叢集各類資訊</description>
	</property>
	<!-- 關閉虛擬記憶體檢查-->
	<property>
		<name>yarn.nodemanager.pmem-check-enabled</name>
		<value>false</value>
		<description>是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設為true</description>
	</property>
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
		<description>是否啟動一個執行緒檢查每個任務正使用的虛擬記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true</description>
	</property>
</configuration>
  • 進入到/usr/local/src/hadoop-2.7.3/目錄下建立對應目錄
mkdir -p dfs/data
mkdir -p dfs/name
mkdir tmp
  • 配置/root/.bashrc全域性環境變數,如下:
    進入vi /root/.bashrc,進行新增如下內容:
# set hadoop environment
export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

新增之後esc退出儲存,並重新載入環境變數
source /root/.bashrc

搭建hadoop叢集條件

需要準備三臺centos7系統;每個系統節點,都需要關閉防火牆(iptables,selinux)、jdk、互信、ip對映

VM克隆slave兩臺

  • 克隆完兩臺slave之後,修改對應IP地址,並重新啟動網路
/etc/init.d/network restart
  • 配置三臺對應hostname,操作命令如下:
hostnamectl set-hostname master
  • 配置主機檔案(每一個節點都需要執行)
    vi /etc/hosts
    192.168.127.130 master
    192.168.127.131 slave1
    192.168.127.132 slave2
    修改為一臺機器的hosts檔案之後,也可以通過scp進行分發hosts檔案,操作命令如下:
scp -r /etc/hosts root@slave1:/etc/

提示輸入yes/no,輸入yes;
提示輸入slave1的密碼,輸入slave1密碼,就會自動分發到對應節點,依次類推發到slave2節點

  • SSH互信配置
    ssh-keygen -t rsa

三次回車生成金鑰(每一個節點都需要執行)

生成公鑰(主節點執行)

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

複製其他節點的公鑰(主節點執行)

ssh slave1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
ssh slave2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys# 複製公鑰到其他節點(主節點執行)
scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/authorized_keys

免密SSH測試

ssh slave1 ip addr
ssh slave2 ip addr