一、基礎環境
說明:1.本文基於CentOS 7 操作系統,CentOS-7-x86_64-Minimal-1804.iso。
2.hadoop使用的版本是hadoop-3.0.3.tar.gz。
注:附上本人已搭建好的Hadoop集群環境的master主機文件,可下載后克隆另外兩slave從機,即可。
鏈接: https://pan.baidu.com/s/16lXWV4-JtAXC1BFyVTgAFg 提取碼: 3923 復制這段內容后打開百度網盤手機App,操作更方便哦
在Linux上安裝Hadoop之前,需要准備好如下基礎環境配置:
1. 創建3台虛擬機,分別命名為:master(主節點)、slave1(從節點)、slave2(從節點);
2. 分別配置好3台虛擬機的靜態IP,我的:master(192.168.70.10)、slave1(192.168.70.20)、slave2(192.168.70.30);
3. 分別將3台虛擬機重名主機名,並做好IP與主機名的域名映射;
4. 關閉3台虛擬機的防火牆,配置好3台機器的免密登錄(SSH);
5. 將3台虛擬機進行網絡時間同步;
6. 3台虛擬機都需安裝同版本的JDK,要求安裝路徑絕對一致。
注:jdk配置文件參考
#JAVA JAVA_HOME=/usr/local/jdk1.8.0_191 JRE_HOME=$JAVA_HOME/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
一、hadoop安裝配置
注:以下操作都是在master主機(namenode)上完成,除非特別申明。
1.使用rz命令上傳hadoop-3.0.3.tar.gz壓縮包至master主機,建議在master主機根目錄下建立目錄/data,用來存放hadoop解壓文件;
建立目錄命令:
mkdir data
解壓壓縮包命令:(/data為指定的目錄)
tar -zxvf hadoop-3.0.3.tar.gz -C /data
2.配置(全局)環境變量:命令:
vi /etc/profile
配置內容:
#HADOOP HADOOP_HOME=/root/data/hadoop-3.0.3 PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_HOME export PATH export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_ROOT_LOGGER=INFO,console export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" #避免因為缺少用戶定義造成的錯誤 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
注:~/.bashrc(局部)配置文件不要做任何改動
3.然后將這些目錄通過scp命令拷貝到Slave1和Slave2的相同目錄下
命令:
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
然后在3台虛擬機上分別運行命令:
source /etc/profile
4.補全配置文件
進入hadoop-3.0.3的配置目錄:
cd /root/data/hadoop-3.0.3/etc/hadoop
a.在hadoop-env.sh文件上添加:
export JAVA_HOME=/usr/local/jdk1.8.0_191
b.在workers文件上,刪除localhost,加入slave虛擬機的名稱一行一個。例如我的是
slave1
slave2
c、創建文件目錄
為了便於管理,給Master的hdfs的NameNode、DataNode及臨時文件,在用戶目錄下創建目錄:
mkdir /data/hdfs/tmp mkdir /data/hdfs/var mkdir /data/hdfs/logs mkdir /data/hdfs/dfs mkdir /data/hdfs/data mkdir /data/hdfs/name mkdir /data/hdfs/checkpoint mkdir /data/hdfs/edits
注:一定要按要求創建,因為上述2)、配置文件中使用到該部分的目錄。
然后將這些目錄通過scp命令拷貝到Slave1和Slave2的相同目錄下。
scp -r /data/hdfs root@slave1:/data
scp -r /data/hdfs root@slave2:/data
d.依次修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml文件.
1)、core-site.xml
<configuration> <property> <name>fs.checkpoint.period</name> <value>3600</value> </property> <property> <name>fs.checkpoint.size</name> <value>67108864</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/root/data/hdfs/tmp</value> </property> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> </configuration>
2)、hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/root/data/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/data/hdfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> <description> The address and the base port where the dfs namenode web ui will listen on. If the port is 0 then the server will start on a free port. </description> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:/root/data/hdfs/checkpoint</value> </property> <property> <name>dfs.namenode.checkpoint.edits.dir</name> <value>file:/root/data/hdfs/edits</value> </property> </configuration>
3)、mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapred.job.tarcker</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
4)、yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<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.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tarcker.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>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
5.將master(主機)上的拷貝hadoop安裝文件到子節點,在主節點(master)上執行:
scp -r /data/hadoop-3.0.3 root@slave1:/data
scp -r /data/hadoop-3.0.3 root@slave2:/data
6.啟動,在master上進入cd /data/hadoop-3.0.3/etc/hadoop目錄,運行:(不報錯並在倒數五六行左右有一句 successfully。。。。即成功)
hdfs namenode -format
注:此命令在初次搭建后,執行一次即可,請勿重復執行!!!若重復(兩次及以上)執行,則需刪除hdfs目錄下的臨時文件(三台機器都要刪除),再重新操作。
7.推薦使用命令:
start-dfs.sh
start-yarn.sh
啟動集群,或者使用命令:(二選一)
start-all.sh
8.運行完后輸入jps可看到master下的節點:
6032 ResourceManager 5793 SecondaryNameNode 5538 NameNode 6355 Jps
在slave1上輸入jps可以看到從節點:
2440 Jps 2316 NodeManager 2206 DataNode
在slave2上輸入jps可以看到從節點:
2342 Jps 2217 NodeManager 2107 DataNode
如此表示成功。
9.測試,打開瀏覽器輸入:http://192.168.70.10:50070
10.打開瀏覽器輸入:http://192.168.70.10:8088
至此,Hadoop集群環境搭建成功!!!
三、注意事項
1.jps實際上是Java進程,若顯示“不是命令”,則原因是jdk地址路徑問題,找到配置文件,檢查更新。
2.三台機器一定要設定ssh登錄。
3.Linux系統一定要關閉selinux。