1. 程式人生 > >Hadoop學習(一)搭建Hadoop的分布式集群

Hadoop學習(一)搭建Hadoop的分布式集群

例子程序 eve work 鍵盤 規劃 shuffle 系統變量 p s har

搭建Hadoop的分布式集群

Hadoop集群搭建的準備操作:

1、準備四臺服務器

  四臺服務器的主機名分別是:potter2、potter3、potter4、potter5。

  對以上四臺服務器需要做一下準備操作,這些準備都是為了將來搭建Hadoop集群做準備的。

  (1)修改各個服務器的主機名。

    第一步:先查看主機名

       技術分享圖片

    第二步:永久修改主機名

      技術分享圖片

      技術分享圖片

      保存退出

  (2)配置各個服務器的IP

    第一步:查看服務器ip

      技術分享圖片

    第二步:配置ip

      技術分享圖片

  (3)配置各個服務器的主機映射

      配置主機映射:

      技術分享圖片

  (4)添加potter用戶,並且添加sudoer權限

    第一步:添加用戶

    技術分享圖片

    設置密碼:

    技術分享圖片

    第二步:添加sudoer權限

      在root用戶下編輯 vi /etc/sudoers

      在文件的如下位置,為hadoop添加一行即可

      root ALL=(ALL) ALL

      potter ALL=(ALL) ALL

      然後,hadoop用戶和spark用戶就可以用sudo來執行系統級別的指令

      [hadoop@hadoop01 ~]$ sudo

useradd huangxiaoming

  (5)關閉防火墻/關閉selinux

    第一步:關閉防火墻

    技術分享圖片

    設置防火墻開機自啟:

    技術分享圖片

    查看防火墻狀態:

    技術分享圖片

    第二步:關閉selinux

    技術分享圖片

  (6)更改系統啟動級別為3

    第一步:查看系統運行的級別

    技術分享圖片

    第二步:修改系統默認啟動級別

    技術分享圖片

    技術分享圖片

  (7)安裝JDK  

    第一步:準備JDK軟件

     jdk-8u73-linux-x64.tar.gz

    第二步:可以通過ftp工具把軟件傳到linux服務器上面;或者按住鍵盤上面的ALT+P    直接拖動上去。

     技術分享圖片

    第三步:把軟件解包解壓縮出來到安裝路徑下去:

      tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local/

      技術分享圖片

    第四步:配置環境變量

      1、vi /etc/profile

      2、在該文件最後加入兩行代碼:

        export JAVA_HOME=/usr/local/jdk1.8.0_73

        export PATH=$PATH:$JAVA_HOME/bin

      3、保存退出

      4、執行 source /etc/profile

    第五步:檢測 jdk 是否安裝成功,使用命令:java -version

      技術分享圖片

然後進行克隆三臺機器,只需要修改IP跟主機名。

  (8)四臺服務器做時間同步 

    第一步:使用 date 命令手動簡單同步一下

      命令:date -s "2016-10-23 11:11:11"

      修改時間後,需要寫入硬件 bios 才能在重啟之後依然生效

      命令:hwclock -w

    第二步:配置 crontab 服務,用 ntpdate 定時同步時間(推薦方式)

      ntpdate 202.120.2.101

    第三步:如果類似 202.120.2.101 這種網絡時間服務器無法訪問,那麽請自行搭建時間服務器

    以上兩種方式不管怎麽做,都不要忘記更改時區。

  (9)四臺服務器配置SSH(免密登錄)

    第一種方式:手動配置(需要在.ssh文件夾中)命令:cd .ssh

      第一步:在potter2中生成密鑰對:命令:ssh-keygen

      第二步:將potter2自己的公鑰放置到授權列表文件authorized_keys

          cat id_rsa.pub >> authorized_keys

      第三步:在potter3中生成密鑰對:命令:ssh-keygen

      第四步:將potter2中的authorized_keys發送給potter3對應的文件夾下

          scp -r authorized_keys [email protected]:/root/.ssh/(如果配置了映射文件IP地址可以寫成potter3)

      第五步:將potter3中的公鑰放置到authorized_keys

          cat id_rsa.pub >> authorized_keys(這樣potter3裏面authorized_keys就有了potter2和potter3的公鑰,可以用 命令:cat authorized_key 查看)

      第六步:將potter3中的authorized_keys發送給potter4對應的文件夾下

          scp -r authorized_keys [email protected]:/root/.ssh/

      第七步:將potter4中的公鑰放置到authorized_keys

          cat id_rsa.pub >> authorized_keys

      第八步:將potter4中的authorized_keys發送給potter5對應的文件夾下

          scp -r authorized_keys [email protected]:/root/.ssh/

      第九步:將potter5中的公鑰放置到authorized_keys

          cat id_rsa.pub >> authorized_keys(這樣authorized_keys文件裏面就有了potter2、potter3、potter4、potter5的公鑰,可以用命令:cat authorized_key 查看)

      第十步:將potter5中的authorized_keys發送個各個linux服務器

          scp -r authorized_keys [email protected]:/root/.ssh/

          scp -r authorized_keys [email protected]:/root/.ssh/

          scp -r authorized_keys [email protected]:/root/.ssh/

      這樣每個服務器中就都有了每一個服務器的公鑰,配置完成。

    第二種方式:

      用 SecureCRTPortable這個軟件將四臺服務器連接好

      第一步:點擊Window選上TileVertically

      技術分享圖片

      會出現以下界面

      技術分享圖片

      第二步:點擊View,選取ChatWindow

      技術分享圖片

      會在下方出現一個輸入框

      技術分享圖片

      第三步:在空白處右鍵選擇Send Chat to All Sessions,會在空白處上方出現Send Chat to All Sessions這個字樣。這樣就可以在空白處輸入命令一起操控四臺服務器。

      技術分享圖片

      第三步:在空白處輸入命令:ssh-keygen,四臺服務器會一起生成密鑰對。

      第四步:在空白處輸入命令:ssh-copy-id potter2,會在potter2服務器上一起生成四個公鑰。

      第五步:在空白處執行三次分別是:

          ssh-copy-id potter3

          ssh-copy-id potter4

          ssh-copy-id potter5

    這樣每個服務器上的ssh就配置好了。

  以上的實現可以分兩步操作,先準備好potter2,先做完1-7步之後,然後克隆出potter3、potter4、potter5。

  然後再做8和9操作,這樣效率最高。

正式搭建Hadoop的分布式集群

1、獲取hadoop安裝包

  第一種方式:從官網直接下載

    hadoop-2.7.5-src.tar.gz 2017-12-17 04:03 45M 源碼包

    hadoop-2.7.5.tar.gz 2017-12-17 04:03 207M 安裝包

  第二種方式:自己編譯

    編譯的目的:就是為了獲取 跟 當前安裝hadoop的操作系統匹配的本地依賴庫。

2、服務器的角色規劃(分配主從節點)

  服務      主節點       從節點

  HDFS      NameNode     DataNode
  YARN      ResourceManager  NodeManager

  服務器的數量有四臺:

  服務    potter2       potter3      potter4      potter5

  HDFS    namenode     datanode     datanode    datanode
  YARN    nodemanager   nodemanager  nodemanager  ResourceManager

具體操作步驟:

1、準備好四臺服務器,做好規劃

  服務器

  規劃安裝的用戶: potter

  規劃安裝目錄:/home/potter/apps

  規劃數據目錄:/home/potter/data

2、獲取安裝包(最好在家目錄下)

  按住鍵盤Alt+p,直接拖入。

3、解壓縮(需要解壓到apps文件夾下)

  tar -zxvf hadoop-2.7.5-centos-6.7.tar.gz -C ~/apps/

4、修改配置文件(需要在hadoop目錄下操作命令:cd apps/hadoop-2.7.5/etc/hadoop/)

  (1)hadoop-env.sh

  (2)core-site.xml

  (3)hdfs-site.xml

  (4)mapred-site.xml

  (5)yarn-site.xml

  (6)slaves

  

  (1)vi hadoop-env.sh

    修改JAVA_HOME

    把   export JAVA_HOME=${JAVA_HOME}

    改成  export JAVA_HOME=/usr/local/java/jdk1.8.0_73

  (2)vi core-site.xml 在<configuration>  </configuration>裏面添加

    <property>

    <name>fs.defaultFS</name>

    <value>hdfs://potter2:9000</value>

    </property>

    <property>

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

    <value>/home/potter/data/hadoopdata</value>

    </property>

  (3)vi hdfs-site.xml 在<configuration>  </configuration>裏面添加

    <property>

    <name>dfs.namenode.name.dir</name>

    <value>/home/potter/data/hadoopdata/name</value>

    <description>為了保證元數據的安全一般配置多個不同目錄</description>

    </property>

    <property>

    <name>dfs.datanode.data.dir</name>

    <value>/home/potter/data/hadoopdata/data</value>

    <description>datanode 的數據存儲目錄</description>

    </property>

    <property>

    <name>dfs.replication</name>

    <value>2</value>

    <description>HDFS 的數據塊的副本存儲個數, 默認是3</description>

    </property>

    <property>

    <name>dfs.secondary.http.address</name>

    <value>potter3:50090</value>

    <description>secondarynamenode 運行節點的信息,和 namenode 不同節點</description>

    </property>

  (4)mapred-site.xml在<configuration>  </configuration>裏面添加  

      需要先復制mapred-site.xml

      命令:cp mapred-site.xml.template mapred-site.xml

    <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    </property>

  (5)vi yarn-site.xml在<configuration>  </configuration>裏面添加

    <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>potter5</value>

    </property>

    <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <description>YARN 集群為 MapReduce 程序提供的 shuffle 服務</description>

    </property>

  (6)vi slaves

    技術分享圖片

  (7)當前的hadoop安裝包是存在於hadoop02上的。 但是安裝的hadoop是一個分布式的集群。

    把安裝包分別分發給其他的節點

    重點強調: 每臺服務器中的hadoop安裝包的目錄必須一致, 安裝包的配置信息還必須保持一致

    需要在 apps文件夾下傳到另外三臺服務器

    scp -r hadoop-2.7.5/ hadoop@potter3:~/apps/

    scp -r hadoop-2.7.5/ hadoop@potter4:~/apps/

    scp -r hadoop-2.7.5/ hadoop@potter5:~/apps/

  (8)配置環境變量 需要在家目錄下(~

    千萬註意:

    1、如果你使用root用戶進行安裝。 vi /etc/profile 即可 系統變量

    2、如果你使用普通用戶進行安裝。可以用ll -a進行查看.bashrc文件 vi ~/.bashrc 用戶變量

    export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5

    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

    需要發送到另外三臺服務器:

    scp -r ~/.bashrc potter3:~

    scp -r ~/.bashrc potter4:~

    scp -r ~/.bashrc potter5:~

  (下面的操作是沒有配置環境變量,可以再需要的時候再配)

  (9)初始化

    需要在bin文件夾下輸入命令(已經配置環境變量的命令:)$HADOOP_HOME/bin/hadoop namenode -format

    (沒有配置環境變量的命令:)[hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/bin/hadoop namenode -format

    只能在HDFS的主節點進行(主節點就是potter2服務器)

    查看初始化:

    進入這個目錄/home/potter/data/hadoopdata/name 有一個current文件夾,進入current裏面有四個文件,說明初始化成功。

  (10)啟動

    可以再hadoop文件夾下查看配置的主節點是哪個服務器

    命令:cat yarn-site.xml

    第一步:啟動HDFS : 不管在集群中的那個節點都可以

        [hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-dfs.sh

    第二步:啟動YARN : 只能在主節點中進行啟動

        [hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-yarn.sh

  (11)檢測 或者 驗證是否成功

    第一種方式:JPS 命令 查看 對應的守護進行是否都啟動成功

    第二種方式:啟動HDFSYARNweb管理界面

          HDFS : http://hadoop02:50070

          YARN http://hadoop05:8088

  (12)簡單使用

    HDFS :(可以新建任意一個文件進行運行)

    上傳文件:~/apps/hadoop-2.7.5/bin/hadoop fs -put zookeeper.out /

    下載文件:~/apps/hadoop-2.7.5/bin/hadoop fs -get /zookeeper.out

    YARN :

    新建一個文件: /wc/input/words.txt

    hello huangbo

    hello xuzheng

    hello wangbaoqiang

    新建一個文件夾:~/apps/hadoop-2.7.5/bin/hadoop fs -mkdir -p /wc/input

    把words.txt上傳到HDFS(在家目錄下輸入命令):

    命令:~/apps/hadoop-2.7.5/bin/hadoop fs -put words.txt /wc/input/

    查看命令:~/apps/hadoop-2.7.5/bin/hadoop fs -ls /wc/input

    進入mapreduce文件夾命令:cd apps/hadoop-2.7.5/share/hadoop/mapreduce/

    需要進入到mapreduce文件夾裏面,這個文件夾在hadoop文件夾下面,

    [potter@potter2 mapreduce]$

    運行一個mapreduce的例子程序: wordcount

    命令:

  ~/apps/hadoop-2.7.5/bin/hadoop jar ~/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wc/input /wc/output

    查看最終結果:

    ~/apps/hadoop-2.7.5/bin/hadoop fs -cat /wc/output/part-r-00000

最終完成hadoop的集群搭建!!!

Hadoop學習(一)搭建Hadoop的分布式集群