hadoop集群有三種運行模式:單機模式、偽分佈模式、完全分佈模式。我們這裡搭建第三種完全分佈模式,即使用分散式系統,在多個節點上運行。 1 環境準備 1.1 配置DNS 進入配置文件,添加主節點和從節點的ip映射關係: 1.2 關閉防火牆 1.3 配置免密碼登錄 (1)每個節點都首先進入/root ...
hadoop集群有三種運行模式:單機模式、偽分佈模式、完全分佈模式。我們這裡搭建第三種完全分佈模式,即使用分散式系統,在多個節點上運行。
1 環境準備
1.1 配置DNS
進入配置文件,添加主節點和從節點的ip映射關係:
# vim /etc/hosts 10.0.0.45 master 10.0.0.46 slave1 10.0.0.47 slave2
1.2 關閉防火牆
# service iptables stop //關閉服務
# chkconfig iptables off //關閉開機自啟動
1.3 配置免密碼登錄
(1)每個節點都首先進入/root/.ssh目錄下,生成密鑰:
# ssh-keygen -t rsa //輸入命令之後連續回車就行了
(2)在主節點上,將公鑰拷貝到一個特定文件中:
[root@master .ssh]# cp id_rsa.pub authorized_keys
(3)將每個從節點上生成的公鑰複製到主節點上:
[root@slave1 .ssh]# scp id_rsa.pub master:/root/.ssh/id_rsa_slave1.pub [root@slave2 .ssh]# scp id_rsa.pub master:/root/.ssh/id_rsa_slave2.pub
(4)在主節點上合併從節點的公鑰:
[root@master .ssh]# cat id_rsa_slave1.pub>>authorized_keys
[root@master .ssh]# cat id_rsa_slave2.pub>>authorized_keys
(5)將主節點上合併後的公鑰複製到從節點上:
[root@master .ssh]# scp authorized_keys slave1:/root/.ssh
[root@master .ssh]# scp authorized_keys slave2:/root/.ssh
配置完成,在各個節點上進行ssh訪問,若無需密碼就能訪問,則配置成功。
1.4 配置java環境
首先下載jdk,保存到指定目錄。設置環境變數:
# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_112 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile //使配置生效
驗證配置是否成功:
# java -vesrion
若出現下麵的配置信息則表示java環境配置成功了:
2 部署Hadoop集群
在各個節點上安裝與配置Hadoop的過程都基本相同,因此可以在每個節點上安裝好Hadoop後,在主節點master上進行統一配置,然後通過scp命令將修改的配置文件拷貝到各個從節點上即可,下麵介紹部署過程。
2.1 安裝Hadoop
下載hadoop安裝包,下載地址:http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/,並解壓:
# tar xvf hadoop-2.7.3.tar.gz
配置環境變數:
# vim /etc/profile export HADOOP_HOME=/home/hadoop-2.7.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
2.2 修改配置文件
進入Hadoop的配置文件目錄$HADOOP_HOME/etc/hadoop,可以看到有許多配置文件,Hadoop集群配置主要是對以下幾個文件的修改:
-
core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
- slaves、hadoop-env.sh、yarn-env.sh
下麵就介紹文件的具體配置,按實際情況修改配置信息:
(1)core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop _tmp</value> </property> </configuration>
(2)hdfs-site.xml
<configuration> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.support.append</name> <value>true</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/dfs_data</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/dfs_name</value> </property> <property> <name>dfs.namenode.rpc-address</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> </property> <property> <name>dfs.namenode.secondary.https-address</name> <value>slave1:50091</value> </property>
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
(3)yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>20480</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>10240</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>5</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>
(4)mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(5)slaves
啟動Hadoop集群需要讀取該文件,以確定從節點主機名,從而啟動DataNode、NodeManager等守護進程,因此需要在該文件中添加從節點主機名。
slave1
slave2
(6)hadoop-env.sh
修改如下內容:
export JAVA_HOME=/usr/java/jdk1.8.0_112
(7)yarn-env.sh
添加如下內容:
export JAVA_HOME=/usr/java/jdk1.8.0_112
到此,完成了主節點上所有的配置,只需將這些配置信息複製到各個從節點:
# scp /home/hadoop-2.7.3/etc/hadoop/* slave1:/home/hadoop-2.7.3/etc/hadoop/
# scp /home/hadoop-2.7.3/etc/hadoop/* slave2:/home/hadoop-2.7.3/etc/hadoop/
2.3 啟動Hadoop
(1)第一次啟動HDFS時需要初始化,在主節點上執行:
# cd /home/hadoop-2.7.3 # ./bin/hadoop namenode -format
(2)啟動HDFS:
# ./sbin/start-dfs.sh
成功啟動後,訪問http://master:50070/即可看到HDFS Web界面。
(3) 啟動YARN:
# ./sbin/start-yarn.sh
成功啟動後,訪問http://master:8088/即可看到YARN Web界面。
這裡也可以直接執行下麵的命令一鍵啟動,但第一次啟動不建議這樣做:
# start-all.sh
到此,Hadoop集群環境已經搭建好了,可以根據自己的業務需求,在上面愉快的“玩耍”了。