Hadoop分布式集群搭建流程記錄
軟件環境
- Hadoop版本:hadoop-2.7.2.tar.gz
- JAVA版本 :jdk-8u77-linux-x64.tar.gz
- Linux版本 :Ubuntu 15.04(64位)
主機IP
- Master.Hadoop XX.XX.XXX.173 Master節點
- Slave1.Hadoop XX.XX.XXX.171 工作節點1
- Slave2.Hadoop XX.XX.XXX.201 工作節點2
- Slave3.Hadoop XX.XX.XXX.156 工作節點3
Step1:Ubuntu基本配置
- 添加root登錄 (可選)
```code
為root賬戶設置密碼:sudo passwd root
測試root賬戶: su -
輸入root密碼,進入root終端
圖形化界面下執行: gedit /usr/share/lightdm/lightdm.conf.d
在打開的文件末尾添加如下代碼,保存并退出
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
重啟計算機即可使用root登錄圖形界面
##注意
* 使用root登錄后雖然方便,但要謹慎操作,防止誤操作刪除重要文件
***
* 更新Ubuntu源
* `gedit /etc/apt/sources.list` 打開源列表
* 清空原有的數據,并添加如下源
```code
#搜狐源:
deb http://mirrors.sohu.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ vivid-backports main restricted universe multiverse
#阿里源:
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
#網易源:
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
添加完畢保存并退出,執行sudo apt-get update
以及sudo apt-get dist-upgrade
- 修改當前機器名
- 執行
gedit /etc/hostname
將主機名改為對應的名稱(Slave1.Hadoop等) - 配置host文件
- 為了讓幾臺主機之間互相“認識”,我們必須修改主機的host,這是主機用來盤配置DNS服務的信息,記載Lan內
各主機對應的Hostname------IP關系 - 執行
gedit /etc/hosts
以Master為例子,為每個節點加入類似如下數據: - XX.XX.XXX.171 Slave1.Hadoop
Step2:配置JAVA環境
- 為所有的節點部署JAVA環境
- 用root身份登錄"Master.Hadoop"后在"/home"下創建"jdk"文件夾,再將"jdk-8u77-linux-x64.tar.gz"復制到"/home/jdk"文件夾中,然后解壓即可。查看"/home/jdk"下面會發現多了一個名為"jdk-8u77-linux-x64"文件夾
,將其重命名為java8
- 執行命令
gedit /etc/profile
打開profile文件,配置JAVA路徑,在文件末尾添加如下命令:
export JAVA_HOME=/home/jdk/java8
export JRE_HOME=/home/jdk/java8/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
- 重啟Ubuntu
Step3:配置SSH實現節點之間免密碼安全連接
- 這一步的意義如下:
- Master和Slave之間連接不能依靠手動輸入密碼,要在確保安全的情況下進行免密鑰相互連接,所以我們要配置SSH免密碼登錄。
- 原理:以Master為例1,在Master上生成一個公鑰和一個私鑰,默認存儲在
/home/username/.ssh
目錄下。
- 具體操作流程:
- 安裝SSH: 執行
sudo apt-get install openssh-server
- 啟動服務時候遇到了
錯誤提示:ssh: Could not resolve hostname : Name or service not known
,解決辦法是在/etc/hosts
里添加進該主機及對應的IP. - 執行:
ssh-keygen
命令,生成無密碼密鑰對。 - 執行
ls -a | grep .ssh
檢查是否有兩個密鑰。 - 執行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將公鑰追加授權到key里面。 - 檢查authorized_keys的權限,不對則使用
chmod 600 authorized_keys
命令修改權限。 - 檢查sshd_config文件(
gedit /etc/ssh/sshd_config
),看下列三行是否注釋掉,沒注釋掉則注釋:
- 安裝SSH: 執行
RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公鑰文件路徑
* 重啟SSH服務,執行`service ssh restart`
* 將公鑰拷貝到要實現免密碼登錄的遠程主機上:執行`ssh-copyid root@Slave1.HAdoop`拷貝到Slave1節點(本機是Masgter)
* 驗證免密碼登錄:
* 本機執行`ssh root@Slave1.Hadoop`即可免密碼登錄Slave1
* 其他節點之間同理操作,下面附上Slave2.Hadoop遠程免密鑰登錄Master節點截圖:

***
#Step4:Hadoop集群部署
* 實驗室配置路徑交代:
* 以Master配置為例,解壓Hadoop,放在`/usr/hadoop`位置。
* 在"**/usr/hadoop**"下面創建**tmp**文件夾,并把Hadoop的安裝路徑添加到"**/etc/profile**"中
* 執行`gedit /etc/profile`,在最下面加上如下命令:
```code
# set hadoop path
export HADOOP_HOME=/usr/hadoop
export $Path=$PATH:$HADOOP_HOME/bin
- 下面進行Hadoop的配置,需要配置的文件在
/usr/hadoop/etc/hadoop
下- 分別是
slaves、core-site.xml、hadfs-site.xml、mapred-stie.xml、yarn-stie
-
slaves: 將作為 DataNode 的主機名寫入該文件,每行一個(Master可以作為工作節點)
Master節點的salves - core-site.xml 改為下面的配置:
- 分別是
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master.Hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
- 文件 hdfs-site.xml,默認的工作節點數(一個子節點則設為1):
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/hadoop/tmp/dfs/data</value>
</property>
</configuration>
- mapred-site.xml (先重命名,去掉.template),配置修改如下:
<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.Hadoop</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 配置完成后,將Master上的
/usr/hadoop
文件上傳到各個節點上,執行命令;
cd /usr
sudo rm -r ./hadoop/tmp # 刪除 Hadoop 臨時文件
sudo rm -r ./hadoop/logs/* # 刪除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先壓縮再復制
cd ~
scp ./hadoop.master.tar.gz Slave1.Hadoop:/usr/hadoop
在Slave1.Hadoop上執行:
sudo rm -r /usr/hadoop # 刪掉舊的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr
sudo chown -R hadoop /usr/hadoop
另外你也可以使用U盤進行拷貝(親測)
- 首次啟動需要再Master上執行
hdfs namenode -format
對NadmeNode格式化 - 啟動Hadoop:
start-all.sh #這個可執行文件在`/usr/hadoop/sbin`下
通過命令 jps可以查看各個節點所啟動的進程。正確的話,在 Master 節點上可以看到 如下進程:
測試啟動結果
Slave節點可以看到如下進程:
Slave節點查看驗證
注意:缺少進程代表出現問題,另外還需要在 Master 節點上通過命令
hdfs dfsadmin -report
查看 DataNode 是否正常啟動,如果 Live datanodes 不為 0 ,則說明集群啟動成功。
- 通過Web頁面查看hadoop集群:
通過Web查看集群
節點Slave2在線
通過Web查看集群