大數據之Hadoop徹底分佈式集羣搭建

1.準備階段

1.1.新建三臺虛擬機

Hadoop徹底分市式集羣是典型的主從架構(master-slave),通常須要使用多臺服務器來組建。咱們準備3臺服務器(關閉防火牆、靜態IP、主機名稱)。若是沒有這樣的環境,能夠在一臺電腦上安裝VMWare Workstation。在VM上安裝三臺Linux,分別是1個主節點,2個從節點,以下圖所示。java

節點類型node

IP地址linux

主機名web

NameNodevim

192.168.86.150安全

master服務器

DataNode網絡

192.168.86.160架構

slave1app

DataNode

192.168.86.170

slave2

注意:這3個節點的IP地址在實際搭建時會有所不一樣。

1.2.配置靜態IP

在Linx系統命令終端,執行命令 vim ifcfg-eth0,並修改文件的內容,按「鍵入編輯內容編譯完成後按Esc鍵退出編譯狀態,以後執行命令wq,保存並退出。IPADDR、 NETMASK、 GATEWAY、DNS1的值能夠根據本身的本機進行修改,以下所示。

DEVICE="eth0"                 #設備名字

BOOTPROTO="static"            #靜態ip

HWADDR="00:0C:29:ED:83:F7"     #mac地址

IPV6INIT="yes"

NM_CONTROLLED="yes"

ONBOOT="yes"                  #開啓自啓動

TYPE="Ethernet"                 #網絡類型

UUID="28354862-67a7-4a5b-9f9a-54561401f614"

IPADDR=192.168.11.10           #IP地址

NETMASK=255.255.255.0         #子網掩碼

GATEWAY=192.168.11.2          #網關

DNS1=192.168.11.2              # dns

1.3.修改主機名和域名映射

(1)啓動命令終端,在任何目錄下執行命令cd/ etc/sysconfig,切換到該目錄並查看目錄下的文件,能夠發現存在文件 network,如圖所示。

 (2)在/etc/sysconfig目錄下找到文件 network,而後執行命令 vim network,按「i」進入編輯內容,編譯完成後按Esc退出編譯狀態,以後執行命令wq保存並退出,後面兩臺也都這樣,以下圖所示。

 (3)修改主機名和iP地址具備映射關係,執行命令vim/ etc/hosts,按「i」進入編輯內容,編譯完成後按Esc退出編譯狀態,以後執行命令wq保存並退出,把三臺的ip和主機名都編輯,如圖所示。

 (4)scp命令傳送文件

scp  /etc/hosts root@slave1:/etc/hosts

scp  /etc/hosts root@slave2:/etc/hosts

把修改好的發送給slave1,再用相同的方法,發送給slave2。

 下面咱們詳細介紹一下scp命令,scp是secure copy的縮寫,是用於Linux之間複製文件和目錄的。scp是Linux系統下基於ssh登錄進行安全的遠程文件拷貝命令。

scp數據傳輸能夠使用ssh1或ssh2。scp命令能夠使用IPv4尋址或IPv6尋址。

l  複製文件語法:

  scp  /源文件完整路徑  遠程用戶名@IP地址: /目標文件完整路徑

     或者

      scp  /源文件完整路徑  遠程用戶名@機器名: /目標文件完整路徑

scp /home/space/music/1.mp3  root@slave1:/home/root/others/music

scp /home/space/music/1.mp3  root@192.168.86.153:/home/root/others/music/001.mp3

l  複製目錄語法:

scp  -r  /源目錄完整路徑  遠程用戶名@IP地址: /目標目錄所在路徑

     或者

scp -r  /源目錄完整路徑  遠程用戶名@機器名: /目標目錄所在路徑

scp -r /home/space/music/  root@slave3:/home/root/others/

scp -r /home/space/music/  root@192.168.86.153:/home/root/others/

l  從遠程複製到本地

從遠程複製到本地,只要將從本地複製到遠程的命令的後2個參數調換順序便可。

scp root@slave3:/home/root/others/music/1.mp3  /home/space/music

參數:

-r

遞歸複製整個目錄。

-v

和大多數linux命令中的-v意思同樣,用來顯示進度。能夠用來查看鏈接、認證、或是配置錯誤。

-C

容許壓縮。(將-C標誌傳遞給ssh,從而打開壓縮功能)。

-1

強制scp命令使用協議ssh1。

-2

強制scp命令使用協議ssh2。

-4

強行使用IPV4地址。

-6

強行使用IPV6地址。

-q

不顯示傳輸進度條。

 

1.4.安裝Java

(1)啓動 Linux命令終端,分別在三臺虛擬機上建立目錄,執行命令mkdir /usr/java,切換到該目錄下執行命令cd/usr/java,

[root@hadoop ~] mkdir/usr/java

[root@hadoop ~]cd /usr/java

(2)把JDK文件jdk-8u181-linux-x64.tar.gz上傳到該目錄下

(3)而後對/usr/java目錄下的JDK壓縮文件jdk-8u181-linux-x64.tar.gz,執行命令

對jdk-8u181-linux-x64.tar.gz進行解壓

[root@hadoop java]#tar -xzvf jdk-8u181-linux-x64.tar.gz

(4)解壓以後,執行命令 Il,能夠看到該目錄下多了一個解壓後的Jdk文件,如圖2-43所示。

 (5)把jdk文件上傳到其餘兩臺,經過命令上傳到其餘兩臺虛擬機上,指定命令

scp –r /usr/java root@主機名:/usr

[root@master ~]scp –r /usr/java root@slave1:/usr

[root@master ~] scp –r /usr/java root@slave2:/usr

(6)而後到slave1和slave2的/usr目錄下看,是否有java這個目錄

(7)完成上一步以後,能夠執行cd jdk.1.7.0_80,進入JDK安裝目錄

 (8)肯定解壓無誤以後,此時須要配置JDK環境變量,執行命令 vim /etc/profile單擊」i「進入編輯內容,編譯完成後按Esc退出編譯狀態,以後執行命令wq保存並退出。如圖

 (9)編輯完後進行配置文件刷新,執行命令 source /etc/profile,刷新配置,配置的信息纔會生效.

[root@hadoop jdk1.7.0_80]# source /etc/profile

(10)完成以上步驟以後,須要測試環境變量是否配置成功,只須要在任何目錄下執行Java –version ,如圖,出現下圖狀況就是配置成功。

 

1.5.關閉防火牆

關閉Linux防火牆有如下3個步驟:

1.查看防火牆狀態

service iptables status

2. 關閉防火牆

service iptables stop

3. 永久性關閉防火牆

chkconfig iptables off

1.6.SSH免密登錄

(1)在Linux系統的終端的任何目錄下經過切換cd ~/.ssh,進入到.ssh目錄下。

     ~表示當前用戶的home目錄,經過cd  ~能夠進入到你的home目錄。.開頭的文件表示隱藏文件,這裏.ssh就是隱藏目錄文件。

(2)在Linux系統命令框的.ssh目錄下

[root@root .ssh]#  ssh-keygen  -t  rsa

 

(連續按四次回車)執行完上面命令後,會生成兩個id_rsa(私鑰)、id_rsa.pub(公鑰)兩個文件,如圖所示

 (3)受權SSH免密碼

[root@master .ssh]# ssh-copy-id  master

[root@master .ssh]# ssh-copy-id  slave1

[root@master .ssh]# ssh-copy-id  slave2

給當前主機和其餘兩臺都設置免密碼登陸,這樣三臺能夠互通。(根據提示輸入yes並輸入訪問主機所須要的密碼。)

 (4)在master主機上執行下面的3條命令。

[root@master .ssh]# ssh master

[root@master .ssh]# ssh slave1

[root@slave1 ~]# exit

[root@master .ssh]# ssh slave2

發現不須要密碼就能鏈接任意一臺虛擬機。

 注意:當執行ssh slave1命令後,就以SSH免密方式登陸到slave1。必須使用exit命令退出登陸slave1,再嘗試執行ssh slave2。

1.7.配置時間同步服務

(1)安裝NTP服務。

在各節點執行命令 yum install -y ntp便可。如果最終出現了「Complete」信息,就說明安裝NTP服務成功。

(2)設置 master節點爲NTP服務主節點,那麼其配置以下。

使用命令「 vim /etc/ntp.conf」來打開/etc/ntp.conf文件,註釋掉以 server開頭的行,並添加代碼所示的內容。

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

server 127.127.1.0

fudge 127.127.1.0 stratum 10

 

(3)分別在slave1,slave2中配置NTP,一樣修改/etc/ntp.conf文件,註釋掉server開頭的行,並添加下面代碼所示的內容。

server master

 (4)永久性關閉防火牆,主節點和從節點都要關閉。執行命令

 service iptables stop

 chkconfig iptables off

 (5)啓動NTP服務

①在 master節點執行命令「 service ntpd start& chkconfig ntpd on」,以下圖所示,說明NTP服務啓動成功。

 ②在slave一、slave2上同步時間。執行命令

ntpdate master

 ③在 slave一、slave2上分別執行「 service ntpd start& chkconfig ntpd on」,即永久啓動NTP服務。

 ④分別在master、slave一、slave2上分別輸入date,看時間是否一致。

2.配置階段

2.1.文件的配置

master主機上

(1)建立目錄mkdir /usr/hadoop,執行命令cd/usr/hadoop,切換到該目錄下,把Hadoop文件上傳到該目錄下

(2)而後對/usr/hadoop目錄下的Hadoop壓縮文件hadoop-2.6.5.tar.gz,執行命令

tar  -zxvf  hadoop-2.6.5.tar.gz  -C  /usr/hadoop 

-C是指解壓壓縮包到指定位置

(3)修改配置文件

切換到$HADOOP_NAME/etc/hadoop 目錄下並查看該目錄下的包,如圖

 下面咱們須要修改如下的7個文件。

文件名

文件路徑

hadoop-env.sh

$HADOOP_NAME/etc/hadoop

core-site.xml

$HADOOP_NAME/etc/hadoop

hdfs-site.xml

$HADOOP_NAME/etc/hadoop

mapred-site.xml

$HADOOP_NAME/etc/hadoop

yarn-site.xml

$HADOOP_NAME/etc/hadoop

yarn-env.sh

$HADOOP_NAME/etc/hadoop

profile

/etc/ profile

slaves

$HADOOP_NAME/etc/hadoop

 (4)在$HADOOP_NAME/etc/hadoop目錄下執行命令

vim hadoop-env.sh

按「i」鍵進入編輯內容,在文件中添加以下內容:

export  JAVA_HOME=/usr/java/ jdk1.8.0_181

export  HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"

編譯完成後,按ESC退出編輯狀態,以後執行命令wq保存並退出

 (5)在$HADOOP_NAME/etc/hadoop目錄下執行命令

vim core-site.xml

並修改配置文件core-site.xml ,內容以下:

<configuration>

         <!—指定HDFS的(Namenode)的缺省路徑地址:master是計算機名,也能夠是ip地址-->

         <property>

                  <name>fs.defaultFS</name>

                  <value>hdfs://master:9000</value>

         </property>

                  <!—指定Hadoop運行時產生文件的存儲目錄,須要建立/usr/hadoop/tmp目錄 -->

         <property>

                  <name>hadoop.tmp.dir</name>

                  <value>/usr/hadoop/tmp</value>

       </property>

</configuration>

 

(6)$HADOOP_NAME/etc/hadoop目錄下執行命令vim hdfs-site.xml,並修改配置文件hdfs-site.xml ,內容以下

<configuration>
              <!--指定HDFS副本的數量 -->
              <property>
                     <name>dfs.replication</name>
                     <value>3</value>
              </property>
              <!--namenode上存儲hdfs名字空間元數據,/home/hadoop/dfs/name須要自建 -->
              <property>
                     <name>dfs.namenode.name.dir</name>
                     <value>/home/hadoop/dfs/name</value>
              </property>
              <!--datanode上數據塊的物理存儲位置,/home/hadoop/dfs/data須要自建 -->
              <property>
                     <name>dfs.datanode.data.dir</name>
                     <value>/home/hadoop/dfs/data</value>
              </property>
         <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:50090</value>
              </property>
</configuration>

 

 (7)在$HADOOP_NAME/etc/hadoop目錄下查看是否有配置文件mapred-site.xml。目錄下默認狀況下沒有該文件,可經過執行命令

mv mapred-site.xml.template mapred-site.xml,修改一個文件的命名。

而後執行命令

vim mapred-site.xml

並修改配置文件mapred-site.xml,內容以下:

<configuration>
       <!—指定mr運行在yarn上->
       <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>

 

(8)在$HADOOP_NAME/etc/hadoop目錄下執行命令vim yarn-site.xml,並修改配置文件yarn-site.xml ,內容以下

<configuration>
              <!—指定resourcemanager的地址,主機是master-->
              <property>
                     <name>yarn.resourcemanager.hostname</name>
                     <value>master</value>
              </property>
              <!—獲取數據的方式-->
              <property>
                     <name>yarn.nodemanager.aux-services</name>
                     <value>mapreduce_shuffle</value>
              </property>
</configuration>

 

 (9)在$HADOOP_NAME/etc/hadoop目錄下執行命令

vim yarn-env.sh

修改配置文件yarn-env.sh ,增長以下內容

export  HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export  HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"

 

 (10)執行命令vim /etc/profile,把Hadoop的安裝目錄配置到環境變量中

#hadoop
HADOOP_HOME=/usr/hadoop/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

 

 (11)而後讓配置文件生效,執行命令

source /etc/profile

(12)在$HADOOP_NAME/etc/hadoop目錄下執行命令vim slaves,並修改配置文件slaves,內容以下。

slave1

slave2s

 

注意:刪除localhost

2.2.分發Hadoop

在master上執行命令,將配置好的hadoop分發到兩個從節點slave1,slave2上。

scp  -r  /usr/hadoop/hadoop-2.6.5  root@slave1:/usr/hadoop/

scp  -r  /usr/hadoop/hadoop-2.6.5  root@slave2:/usr/hadoop/

注:在slave1和slave2上提早先建立好/usr/hadoop目錄

在從節點slave1,slave2上修改/etc/profile

2.3.格式化NameNode

master主機是NameNode,必須格式化以後才能使用,格式化命令只須要執行一次。在任意目錄下,執行命令

hdfs namenode  -format

或者

hadoop namenode  -format

注意:以上命令必須在配置Hadoop環境變量的狀況下才能執行。因此必須修改/etc/profile文件而且執行下面的命令啓動修改。

source /etc/profile

2.4.啓動集羣

(1)首先啓動HDFS系統,master上$HADOOP_HOME/sbin目錄下執行命令start-dfs.sh(注意slave1和slave2不須要執行命令),而後在master、slave一、slave2主機上用jps查看進程,如圖所示。

 如上圖能夠看出master主機是NameNode同時仍是SecondNameNode。slave1和slave2主機是DataNode。

注意:在slave1和slave2上修改/etc/profile,執行12.2.11中的步驟10和步驟11。

(2)首先啓動yarn系統,master上執行命令start-yarn.sh(注意slave1和slave2不須要執行命令),而後在master、slave一、slave2主機上用jps查看進程,如圖所示。

如上圖能夠看出master主機上有ResourceManager。slave1和slave2主機上有NodeManager。

至此,咱們的Hadoop的徹底分佈式集羣搭建已經大功告成了。

相關文章
相關標籤/搜索