天天看點

大資料第一課-Hadoop全分布式叢集搭建

一、前序

在開始全分布式叢集搭建之前,首先應該安裝好三台虛拟機。。。。如果電腦比較卡,建議多加8G記憶體條。

我這裡是Centos7版本的。

hadoop編譯後的安裝包:

連結:https://pan.baidu.com/s/1xythD1ESNBlPfAW9Pi_3Cw

提取碼:7lct

二、大資料安裝前期準備

1、三台機器在root使用者下關閉防火牆

systemctl stop firewalld                  
systemctl disable firewalld         

2、三台機器執行以下指令關閉selinux

打開檔案

vi /etc/selinux/config      

修改檔案(修改下一行)

SELINUX=disabled      

3、三台電腦修改電腦主機名

vi /etc/hostname      

第一台機器更改内容:node01

第二台機器更改内容:node02

第三台機器更改内容:node03

4、三台機器做主機名與IP位址的映射

vi /etc/hosts      

然後增加以下内容

192.168.52.100   node01
192.168.52.110   node02
192.168.52.120   node03      

5、重新開機三台虛拟機

reboot  -h  now      

6、三台電腦添加普通使用者并給普通使用者添加sudo權限

在root使用者下執行:第一行添加使用者,第二行設定密碼

useradd hadoop
passwd hadoop      

添加sudo權限

打開檔案

visudo      

給hadoop使用者sudo權限

hadoop  ALL=(ALL)       ALL      

7、三台機器同一安裝目錄

mkdir -p /kkb/soft                      # 軟體壓縮包存放目錄
mkdir -p /kkb/install                   # 軟體解壓後存放目錄
chown -R hadoop:hadoop /kkb             # 将檔案夾權限更改為hadoop使用者      

然後, 三台機器通過 su  hadoop指令來切換到hadoop使用者

8、設定免密登陸

第一步:三台機器在hadoop使用者下執行以下指令生成公鑰與私鑰

三台機器在hadoop使用者下執行以下指令,然後生成公鑰與私鑰

ssh-keygen -t rsa      

執行上述指令之後,按三次Enter鍵即可生成了,生成後會發現有  .ssh目錄,用 ll  -a 指令可以檢視

第二步:三台機器拷貝公鑰到node01伺服器上面去

三台機器在hadoop使用者下,執行以下指令将公鑰拷貝到node01伺服器上面去

ssh-copy-id  node01      

第三步:node01伺服器将公鑰拷貝給node02與node03

node01在hadoop使用者下,執行以下指令,将authorized_keys拷貝到node02與node03伺服器

cd /home/hadoop/.ssh/
scp authorized_keys  node02:$PWD
scp authorized_keys  node03:$PWD      

然後關虛拟機重新開機。

三、JDK安裝

使用hadoop使用者來重新連接配接三台機器,然後使用hadoop使用者來安裝jdk軟體

上傳壓縮包到第一台伺服器的/kkb/soft下面,然後進行解壓,配置環境變量即可,三台機器都依次安裝即可

cd /kkb/soft/
tar -zxf jdk-8u141-linux-x64.tar.gz  -C /kkb/install/
sudo vim /etc/profile      
#添加以下配置内容,配置jdk環境變量
export JAVA_HOME=/kkb/install/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH      

然後  執行     source  /etc/profile   指令讓修改生效

四、Hadoop叢集安裝

1、安裝環境服務部署規劃

伺服器IP node01 node02 node03
HDFS NameNode
HDFS SecondaryNameNode
HDFS DataNode DataNode DataNode
YARN ResourceManager
YARN NodeManager NodeManager NodeManager
曆史日志伺服器 JobHistoryServer

2、上傳安裝包并解壓(這個安裝包是編譯後的)

cd /kkb/soft/
tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz  -C /kkb/install      

3、檢視hadoop支援的壓縮方式以及本地庫

第一台機器執行以下指令

cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/hadoop checknative      

如果出現openssl為false,那麼所有機器線上安裝openssl即可,執行以下指令,虛拟機聯網之後就可以線上進行安裝了

sudo yum -y install openssl-devel      

4、修改配置檔案

core-site.xml    hdfs-site.xml   hadoop-env.sh     mapred-site.xml    yarn-site.xml      slaves

一、修改core-site.xml

第一台機器執行以下指令

cd /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
vim core-site.xml      

然後添加以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value>
    </property>
    <!-- 緩沖區大小,實際工作中根據伺服器性能動态調整 -->
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    <!-- 開啟hdfs的垃圾桶機制,删除掉的資料可以從垃圾桶中回收,機關分鐘 -->
    <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>
 </configuration>      

二、修改hdfs-site.xml

<configuration>
<!-- NameNode存儲中繼資料資訊的路徑,實際工作中,一般先确定磁盤的挂載目錄,然後多個目錄用,進行分割   --> 
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node01:50090</value>
</property>
<property>
    <name>dfs.namenode.http-address</name>
    <value>node01:50070</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas</value>
</property>
<!-- 定義dataNode資料存儲的節點位置,實際工作中,一般先确定磁盤的挂載目錄,然後多個目錄用,進行分割 -->
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas</value>
</property>
<property>
    <name>dfs.namenode.edits.dir</name>
    <value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits</value>
</property>
<property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name</value>
</property>
<property>
    <name>dfs.namenode.checkpoint.edits.dir</name>
    <value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.blocksize</name>
    <value>134217728</value>
</property>
</configuration>      

三、修改hadoop-env.sh

export JAVA_HOME=/kkb/install/jdk1.8.0_141      

四、修改mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.job.ubertask.enable</name>
        <value>true</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node01:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node01:19888</value>
    </property>
 </configuration>      

五、修改yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node01</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
 </configuration>      

六、修改slaves

node01
node02
node03      

5、添加目錄(這些目錄都是在配置檔案    hdfs-site.xml     中涉及到的)

mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas
mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas
mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas 
mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits
mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name
mkdir -p /kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits      

6、分發配置檔案

在node01上執行以下指令

cd /kkb/install/
scp -r hadoop-2.6.0-cdh5.14.2/ node02:$PWD
scp -r hadoop-2.6.0-cdh5.14.2/ node03:$PWD      

7、配置hadoop環境變量

三台機器都要進行配置hadoop的環境變量

三台機器執行以下指令

 sudo vim /etc/profile      

然後添加一下内容

export HADOOP_HOME=/kkb/install/hadoop-2.6.0-cdh5.14.2
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH      

配置完成之後生效  source /etc/profile

8、格式化叢集

注意:首次啟動HDFS時,必須對其進行格式化操作。本質上是一些清理和準備工作,因為此時的 HDFS 在實體上還是不存在的。

格式化操作隻有在首次啟動的時候需要,以後再也不需要了

 hdfs namenode -format    或者    hadoop namenode –format      

9、叢集啟動

依次執行

start-dfs.sh

start-yarn.sh

mr-jobhistory-daemon.sh start historyserver      

10、關閉叢集

依次執行

stop-dfs.sh

stop-yarn.sh

mr-jobhistory-daemon.sh stop historyserver      

 11、課外知識

本機hosts檔案所在位址,這個位址可以配置連接配接虛拟機的ip

C:\Windows\System32\drivers\etc      

多次格式化可能導緻  datanode和namenode的clusterID不一樣,導緻datanode不能啟動,可以修改datanode的ID

使其和namenode的ID一樣 

叢集中   namenode clusterID  所在的位置

/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits/current/VERSION      

叢集中   datanode clusterID  所在的位置

/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas/current/VERSION      

12 啟動後的web界面

hdfs叢集通路位址

http://192.168.52.100:50070/dfshealth.html#tab-overview

yarn叢集通路位址

http://192.168.52.100:8088/cluster

jobhistory通路位址:

http://192.168.52.100:19888/jobhistory