Hadoop環境搭建(centos)
Hadoop環境搭建(centos)
本平台密碼83953588abc
配置Java環境
- 下載JDK(本實驗從/cgsrc 文件中複製到指定目錄)
mkdir /usr/local/java
cp /cgsrc/jdk-8u171-linux-x64.tar.gz /usr/local/java/
JDK至少1.8以上!!!
- 解壓JDK安裝包
cd /usr/local/java
tar -zxvf jdk-8u171-linux-x64.tar.gz
rm -f jdk-8u171-linux-x64.tar.gz
- 添加環境變數
配置JAVA_HOME環境變數。修改文件vim ~/.bashrc
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar
export PATH=$PATH:${JAVA_HOME}/bin
如果PATH環境變數修改錯誤,則可能出現Linux常用命令無法找到的現象!!!
使修改環境生效,source ~/.bashrc
.
檢查是否設置正確.
echo $JAVA_HOME #檢查變數值
java -version #查看java版本
配置分散式模式
選定一台機器作為名稱節點(Master),另外兩條作為數據節點(Slave)。
配置hosts文件
在Master上修改/etc/hosts
文件:
使用命令vim /etc/hosts
ip1 master
ip2 slave1
ip3 slave2
測試節點之間是否已經聯通:
ping master -c 3
ping slave1 -c 3
ping slave2 -c 3
配置SSH無密碼登錄
- 必須要讓master節點可以SSH無密碼登錄到各個節點上。首先,生成master節點的公匙,如果之前已經生成過公匙,必須刪除原來的公匙,重新生成一次,命令如下:
cd ~/.ssh #如果沒有該目錄,先執行一次ssh localhost
rm -f ./id_rsa* #刪除之前生成的公匙
ssh-keygen -t rsa #執行該命令後,遇到提示資訊,均按Enter即可。
-
為了讓master節點能無密碼SSH登錄到本機,需要在mater節點上執行如下
cat ./id_rsa.pub >> ./authorized_keys
.檢測是否成功,
ssh master
,遇到提示資訊,yes
即可,exit
退出。 -
把master上的公匙傳輸到slave節點:
scp ~/.ssh/id_rsa.pub root@slave1:/root
scp ~/.ssh/id_rsa.pub root@slave1:/root
其中本次實驗平台,要把slave1、slave2換成相應的IP。
- 傳輸完成後在slave1和slave2節點上將SSH公匙加入授權:
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authoried_keys
rm -f ~/id_rsa.pub
配置環境變數
-
將Hadoop安裝包複製到
/usr/local
目錄上:cp /cgsrc/hadoop-2.7.1.tar.gz /usr/local/
-
解壓
cd /usr/local
tar -zxvf hadoop-2.7.1.tar.gz
rm -f hadoop-2.7.1.tar.gz
mv hadoop-2.7.1/ hadoop #將hadoop-2.7.1重命名為hadoop
- 配置環境變數
- 打開
~/.bashrc
文件vim ~/.bashrc
- 輸入以下內容
export PATH=$PATH:/usr/1ocal/hadoop/bin:/usr/1ocal/hadoop/sbin
- 文件生效
source ~/.bashrc
- 查看hadoop版本
hadoop version
- 打開
配置集群環境
配置集群環境時,需要修改/usr/local/hadoop/etc/hadoop目錄下的配置文件,這裡僅設置正常啟動必須的設置項,包括slaves、core-site.xml、hdfs
-site.xml、mapred-site.xml、yarn-site.xml共五個文件。
- 修改文件slaves
需要把所有數據節點的主機名寫入該文件,每行一個,默認為localhost
(即把本機作為數據節點)。在進行集群配置時,可以保留localhost,讓master節點同時充當名稱節點和數據節點,也可以刪除localhost這行,讓master節點僅作為名稱節點使用。
本節讓master節點僅作為名稱節點使用,因此將slaves文件中原來的內容刪除,添加如下內容:slave1
slave2
- 修改文件core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/1ocal/hadoop/tmp</value>
</property>
</configuration>
- 修改文件hdfs-site.xml
對於Hadoop的分散式文件系統HDFS而言,一般是採用元餘存儲,冗餘因子一般是3,也就是說一份數據保存3份副本。而我們只有兩個數據節點,即數據只能保存兩份,所以,dfs.replication設置為2,文件具體內容如下:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/1ocal/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/1ocal/hadoop/tmp/dfs/date</value>
</property>
</configuration>
- 修改文件mapred-site.xml
/usr/local/hadoop/etc/hadoop 目錄下有一個mapred-site.xml.template,需要複製該文件為mapred-site.xml:
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
- 修改文件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>
</configuration>
配置slave節點
將master節點上的/usr/local/hadoop
複製到slave節點上。
cd /usr/local
rm -rf ./hadoop/tmp #刪除臨時文件
rm -rf ./hadoop/1ogs/* #刪除日誌文件
tar -zcf ~/hadoop.master.tar.gz. /hadoop #先壓縮再複製
cd ~
scp ./hadoop.master.tar.gz root@slave1: /root
scp ./hadoop.master.tar.gz root@slave2: /root
在slave1和slave2上執行如下命令:
rm -rf usr/local/hadoop #如果有舊文件則先刪除
tar -zxf ~/hadoop.master.tar.gz -C /usr/1ocal
rm -f ~/hadoop.master.tar.gz
啟動Hadoop集群
- 首次啟動Hadoop集群時,需要先在
master
節點執行名稱節點的格式化:
hdfs namenode-format
- 現在可以啟動Hadoop了,啟動需要在master節點上進行,執行如下命令:
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver