《Hadoop3.1》叢集搭建指南
Hadoop3.1 叢集搭建指南
前言
本實驗基於Hadoop3.1 和 jdk1.8安裝,主要涉及內容是linux網路設定,主機設定,ssh遠端登陸設定,
用的作業系統是Centos6.8。
一:LINUX基本配置
步驟:(注:#代表超級使用者下使用)
1 建立單個使用者用於Hadoop叢集搭建
#:useradd username
再鍵入密碼就行了
2 修改sudoers檔案,使在Hadoop下可以使用sudo操作
在root下修改:#:/etc/sudoers 新增如下
3 修改主機名
# vi /etc/sysconfig/network
4 linux網路配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
5 修改hosts檔案
# vi /etc/hosts
注:以上都是一臺主機的操作,如果進行叢集需要在hosts檔案新增節點主機IP和主機名
二:安裝JDK
1 解壓jdk
# tar -zxvf jdkname
2 配置環境變數
# vi /etc/profile 新增
export JAVA_HOME=/usr/java/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
(溫馨提示:如果你的centos預裝了jdk ,java -version會顯示預裝的版本,例如我安裝的明明是jdk1.8
他顯示1.7的
解決:
檢視安裝的版本
# rpm -qa | grep java
刪除預裝的版本(我的裡預裝的是這兩個)
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64
再次檢查發現只剩一個了
此時再java -version就會報錯,說沒有該命令
解決:輸入
# source /etc/profile 成功解決。)
三 :安裝hadoop3.1
叢集規劃
主機名 | 角色 | IP | 賬戶 | 密碼 | CPU | 記憶體 |
master | NameNode JobTracker |
192.168.58.131 | root | 111111 | 4vCPU | 12GB |
slave1 | DataNode TaskTracker |
192.168.58.132 | root | 111111 | 4vCPU | 12GB |
slave2 | DataNode TaskTracker |
192.168.58.133 | root | 111111 | 4vCPU | 12GB |
1 解壓
# tar -zxvf hadoop-3.1.1.tar.gz
假設解壓的檔案目錄在:/usr/hadoop下
2 修改配置檔案
# vi /usr/hadoop/etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:///usr/hadoop/tmp</value> </property> </configuration> |
# vi /usr/hadoop/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///usr/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///usr/hadoop/hdfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:9001</value> </property> </configuration> |
# vi /usr/hadoop/etc/hadoop/workers
slave1 slave2 |
# vi /usr/hadoop/etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value> /usr/hadoop/etc/hadoop, /usr/hadoop/share/hadoop/common/*, /usr/hadoop/share/hadoop/common/lib/*, /usr/hadoop/share/hadoop/hdfs/*, /usr/hadoop/share/hadoop/hdfs/lib/*, /usr/hadoop/share/hadoop/mapreduce/*, /usr/hadoop/share/hadoop/mapreduce/lib/*, /usr/hadoop/share/hadoop/yarn/*, /usr/hadoop/share/hadoop/yarn/lib/* </value> </property> </configuration> |
# vi /usr/hadoop/etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandle</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8040</value> </property> </configuration> |
# vi /usr/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_161 # source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh |
# vi /usr/hadoop/etc/hadoop/start-yarn.sh
export YARN_RESOURCEMANAGER_USER=root export HADOOP_SECURE_DN_USER=root export YARN_NODEMANAGER_USER=root |
# vi /usr/hadoop/etc/hadoop/stop-yarn.sh
export YARN_RESOURCEMANAGER_USER=root export HADOOP_SECURE_DN_USER=root export YARN_NODEMANAGER_USER=root |
# vi /usr/hadoop/etc/hadoop/start-dfs.sh
export HDFS_NAMENODE_SECURE_USER=root export HDFS_DATANODE_SECURE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root |
# vi /usr/hadoop/etc/hadoop/stop-dfs.sh
export HDFS_NAMENODE_SECURE_USER=root export HDFS_DATANODE_SECURE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root |
3 克隆slave1和slave2
(注:centos6.8克隆後自動分配ip地址,ifconfig檢視ip地址,修改ifcfg-eth0檔案)
①:修改,點選克隆slave1的網路介面卡如下
②:修改內容如下
slave2同上。
每個結點都執行
# vi /etc/profile export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin # source /etc/profile # source /usr/hadoop/etc/hadoop/hadoop-env.sh |
在master結點修改hadoop-env.sh
# vi /usr/hadoop/etc/hadoop/hadoop-env.sh export HDFS_NAMENODE_SECURE_USER=root export HDFS_DATANODE_SECURE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root # source /usr/hadoop/etc/hadoop/hadoop-env.sh |
4 配置ssh免密登入
在每個主機上都執行:ssh-keygen,提示直接鍵入y和enter
在master結點上執行:
ssh-copy-id 192.168.58.132
ssh-copy-id 192.168.58.132
格式化叢集
hdfs namenode -format
格式化成功
啟動叢集
start-all.sh
如果namenode沒有啟動則輸入:./hadoop-daemon.sh namenode start
jps
通過網頁訪問:
192.168.58.131:8088/
192.168.58.131:9870/
(注意:有的瀏覽器進不去192.168.58.131:9870,例如QQ瀏覽器就不行,也許我沒更新的原因,改用Chrome就好了。)