CentOS 下 Hadoop集羣搭建

1 下載hadoopjava

2 安裝3個虛擬機並實現ssh免密碼登陸node

        2.1安裝3個機器web

        2.2檢查機器名稱apache

        2.3修改/etc/hosts文件ubuntu

        2.4 給3個機器生成祕鑰文件vim

        2.5 在hserver1上建立authorized_keys文件瀏覽器

        2.6將authorized_keys文件複製到其餘機器app

        2.7 測試使用ssh進行無密碼登陸ssh

                   2.7.1在hserver1上進行測試webapp

                   2.7.2在hserver2上進行測試

                   2.7.3在hserver3上進行測試

3安裝jdk和hadoop

         3.1安裝JDK

         3.2安裝hadoop

                  3.2.1上載文件並解壓縮

                  3.2.2新建幾個目錄

                  3.2.3修改etc/hadoop中的一系列配置文件

                              3.2.3.1修改core-site.xml

                              3.2.3.2修改hadoop-env.sh

                              3.2.3.3修改hdfs-site.xml

                              3.2.3.4新建而且修改mapred-site.xml

                              3.2.3.5修改slaves文件

                              3.2.3.6修改yarn-site.xml文件

4啓動hadoop

              4.1在namenode上執行初始化

              4.2在namenode上執行啓動命令

5測試hadoop

 

  關鍵字:Linux  CentOS  Hadoop  Java

  版本:  CentOS7  Hadoop2.8.0  JDK1.8

  說明:Hadoop從版本2開始加入了Yarn這個資源管理器,Yarn並不須要單獨安裝。只要在機器上安裝了JDK就能夠直接安裝Hadoop,單純安裝Hadoop並不依賴Zookeeper之類的其餘東西。

1下載hadoop

     本博文使用的hadoop是2.8.0

    打開下載地址選擇頁面:

http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz

    如圖:

 

我使用的地址是:

       http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz 

2安裝3個虛擬機並實現ssh免密碼登陸

2.1安裝3個機器

        這裏用的Linux系統是CentOS7(其實Ubuntu也很好,可是這裏用的是CentOS7演示),安裝方法就很少說了,若有須要請參考該博文:

        http://blog.csdn.net/pucao_cug/article/details/71229416

        安裝3個機器,機器名稱分別叫hserver一、hserver二、hserver3(說明機器名不這麼叫能夠,待會用hostname命令修改也行)。

如圖:

   

 

          說明:爲了免去後面一系列受權的麻煩,這裏直接使用root帳戶登陸和操做了。

          使用ifconfig命令,查看這3個機器的IP。個人機器名和ip的對應關係是:

 

192.168.119.128   hserver1

192.168.119.129   hserver2

192.168.119.130   hserver3

2.2檢查機器名稱

         爲了後續操做方便,確保機器的hostname是咱們想要的。拿192.168.119.128這臺機器爲例,用root帳戶登陸,而後使用hostname命令查看機器名稱

如圖:

    

 

        發現,這個機器名稱不是咱們想要的。不過這個好辦, 我給它改個名稱,命令是:

hostname   hserver1

如圖:

   

         執行完成後,在檢查看,是否修改了,敲入hostname命令

  如圖:

      

          相似的,將其餘兩個機器,分別更名爲hserver2和hserver3。

2.3 修改/etc/hosts文件

        修改這3臺機器的/etc/hosts文件,在文件中添加如下內容:

 

[plain] view plain copy

  1. 192.168.119.128   hserver1  
  2. 192.168.119.129   hserver2  
  3. 192.168.119.130   hserver3  

如圖:

     

          說明:IP地址不必和個人同樣,這裏只是作一個映射,只要映射是對的就能夠,至於修改方法,能夠用vim命令,也能夠在你的本地機器上把hosts文件內容寫好後,拿到Linux機器上去覆蓋。

          配置完成後使用ping命令檢查這3個機器是否相互ping得通,以hserver1爲例,在什麼執行命令:

 ping  -c 3  hserver2

如圖:

     

 

       執行命令:

ping  -c  3  hserver3

如圖:

     

 

        ping得通,說明機器是互聯的,並且hosts配置也正確。

2.4給3個機器生成祕鑰文件

         以hserve1爲例,執行命令,生成空字符串的祕鑰(後面要使用公鑰),命令是:

ssh-keygen  -t   rsa   -P  ''

如圖:

     

 

         由於我如今用的是root帳戶,因此祕鑰文件保存到了/root/.ssh/目錄內,可使用命令查看,命令是:

ls    /root/.ssh/

如圖:

   

 

       使用一樣的方法爲hserver2和hserver3生成祕鑰(命令徹底相同,不用作如何修改)。

2.5在hserver1上建立authorized_keys文件

          接下來要作的事情是在3臺機器的/root/.ssh/目錄下都存入一個內容相同的文件,文件名稱叫authorized_keys,文件內容是咱們剛纔爲3臺機器生成的公鑰。爲了方便,我下面的步驟是如今hserver1上生成authorized_keys文件,而後把3臺機器剛纔生成的公鑰加入到這個hserver1的authorized_keys文件裏,而後在將這個authorized_keys文件複製到hserver2和hserver3上面。

       首先使用命令,在hserver1的/root/.ssh/目錄中生成一個名爲authorized_keys的文件,命令是:

touch  /root/.ssh/authorized_keys

如圖:

    

 

      可使用命令看,是否生成成功,命令是:

ls   /root/.ssh/

如圖:

    

          其次將hserver1上的/root/.ssh/id_rsa.pub文件內容,hserver2上的/root/.ssh/id_rsa.pub文件內容,hserver3上的/root/.ssh/id_rsa.pub文件內容複製到這個authorized_keys文件中,複製的方法不少了,能夠用cat命令和vim命令結合來弄,也能夠直接把這3臺機器上的/root/.ssh/id_rsa.pub文件下載到本地,在本地將authorized_keys文件編輯好在上載到這3臺機器上。

hserver1機器上個人/root/.ssh/id_rsa.pub內容是:

 

[plain] view plain copy

  1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD8fTIVorOxgDo81yCEgcJTstUcyfOBecL+NZ/OLXCEzaBMw5pLV0UNRX6SZnaAgu/erazkz4sw74zfRIMzEeKKCeNcZ6W78cg+ZNxDcj8+FGeYqY5+nc0YPhXFVI7AwFmfr7fH5hoIT14ClKfGklPgpEgUjDth0PeRwnUTvUy9A1x76npjAZrknQsnoLYle7cVJZ/zO3eGxS75YEdTYDMv+UMiwtcJg7UxOqR+9UT3TO+xLk0yOl8GIISXzMhdCZkmyAH+DmW56ejzsd+JWwCMm177DtOZULl7Osq+OGOtpbloj4HCfstpoiG58SM6Nba8WUXWLnbgqZuHPBag/Kqjroot@hserver1  

hserver2機器上個人/root/.ssh/id_rsa.pub內容是:

 

[plain] view plain copy

  1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC29kPkYz4c3bd9Qa1TV8kCR0bUNs4f7/dDcR1NKwrgIiecN7zPEWJpjILtlm3niNNx1j5R49QLTLBKKo8PE8mid47POvNypkVRGDeN2IVCivoAQ1T7S8bTJ4zDECGydFYyKQfS2nOAifAWECdgFFtIp52d+dLIAg1JC37pfER9f32rd7anhTHYKwnLwR/NDVGAw3tMkXOnFuFKUMdOJ3GSoVOZf3QHKykGIC2fz/lsXZHaCcQWvOU/Ecd9e0263Tvqh7zGWpF5WYEGjkLlY8v2sioeZxgzog1LWycUTMTqaO+fSdbvKqVj6W0qdy3Io8bJ29Q3S/6MxLa6xvFcBJEXroot@hserver2  

hserver2機器上個人/root/.ssh/id_rsa.pub內容是:

 

[plain] view plain copy

  1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1a2o10ttv2570GpuUZy7g9o7lIkkeed7ba25VvFEBcUroQIZ+NIAiVIMGPRiOqm7X4bTLWj5EOz5JXG2l8rwA6CFnWfW3U+ttD1COLOrv2tHTiJ1PhQy1jJR/LpC1iX3sNIDDs+I0txZFGTCTRMLmrbHVTl8j5Yy/CTYLuC7reIZjzpHP7aaS2ev0dlbQzeB08ncjA5Jh4X72qQMOGPUUc2C9oa/CeCvI0SJbt8mkHwqFanZz/IfhLJIKhupjtYsqwQMmzLIjHxbLRwUGoWU6X4e76OkUz/xyyHlzBg1Vu2F9hjoXPW80VmupIRSXFDliDBJ8NlXXQN47wwYBG28broot@hserver3  

合併以後,個人hserver1機器上的/root/.ssh/authorized_keys文件內容是:

 

[plain] view plain copy

  1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD8fTIVorOxgDo81yCEgcJTstUcyfOBecL+NZ/OLXCEzaBMw5pLV0UNRX6SZnaAgu/erazkz4sw74zfRIMzEeKKCeNcZ6W78cg+ZNxDcj8+FGeYqY5+nc0YPhXFVI7AwFmfr7fH5hoIT14ClKfGklPgpEgUjDth0PeRwnUTvUy9A1x76npjAZrknQsnoLYle7cVJZ/zO3eGxS75YEdTYDMv+UMiwtcJg7UxOqR+9UT3TO+xLk0yOl8GIISXzMhdCZkmyAH+DmW56ejzsd+JWwCMm177DtOZULl7Osq+OGOtpbloj4HCfstpoiG58SM6Nba8WUXWLnbgqZuHPBag/Kqjroot@hserver1  
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC29kPkYz4c3bd9Qa1TV8kCR0bUNs4f7/dDcR1NKwrgIiecN7zPEWJpjILtlm3niNNx1j5R49QLTLBKKo8PE8mid47POvNypkVRGDeN2IVCivoAQ1T7S8bTJ4zDECGydFYyKQfS2nOAifAWECdgFFtIp52d+dLIAg1JC37pfER9f32rd7anhTHYKwnLwR/NDVGAw3tMkXOnFuFKUMdOJ3GSoVOZf3QHKykGIC2fz/lsXZHaCcQWvOU/Ecd9e0263Tvqh7zGWpF5WYEGjkLlY8v2sioeZxgzog1LWycUTMTqaO+fSdbvKqVj6W0qdy3Io8bJ29Q3S/6MxLa6xvFcBJEXroot@hserver2  
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1a2o10ttv2570GpuUZy7g9o7lIkkeed7ba25VvFEBcUroQIZ+NIAiVIMGPRiOqm7X4bTLWj5EOz5JXG2l8rwA6CFnWfW3U+ttD1COLOrv2tHTiJ1PhQy1jJR/LpC1iX3sNIDDs+I0txZFGTCTRMLmrbHVTl8j5Yy/CTYLuC7reIZjzpHP7aaS2ev0dlbQzeB08ncjA5Jh4X72qQMOGPUUc2C9oa/CeCvI0SJbt8mkHwqFanZz/IfhLJIKhupjtYsqwQMmzLIjHxbLRwUGoWU6X4e76OkUz/xyyHlzBg1Vu2F9hjoXPW80VmupIRSXFDliDBJ8NlXXQN47wwYBG28broot@hserver3  

 

如圖:

    

 

2.6將authorized_keys文件複製到其餘機器

        hserver1機器的/root/.ssh/目錄下已經有authorized_keys這個文件了,該文件的內容也已經OK了,接下來要將該文件複製到hserver2的/root/.ssh/和hserver3的/root/.ssh/。

       複製的方法有不少,最簡單的就是用SecureFX可視化工具操做吧。

       複製完成後,能夠看到三臺機器的/root/.ssh目錄下都有了這樣的文件

       如圖:

 

       

        上圖已經說得很清楚了,三臺機器的/root/.ssh都有同名的文件,可是隻有authorized_keys文件的內容是相同的。

2.7測試使用ssh進行無密碼登陸

 

2.7.1在hserver1上進行測試

       輸入命令:

ssh   hserver2

如圖:

  

 輸入命令:

 exit回車

如圖:

   

 

輸入命令:

ssh   hserver3

如圖:

   

 

輸入命令:

 exit回車

如圖:

    

 

2.7.2 在hserver2上進行測試

        方法相似2.7.1,只不過命令變成了ssh  hserver1和ssh  hserver3,可是必定要注意的是,每次ssh完成後,都要執行exit,不然你的後續命令是在另一臺機器上執行的。

2.7.3 在hserver3上進行測試

      方法相似2.7.1,只不過命令變成了ssh  hserver1和ssh  hserver2,可是必定要注意的是,每次ssh完成後,都要執行exit,不然你的後續命令是在另一臺機器上執行的。

3安裝jdk和hadoop

         說明,爲了省去一系列獲取管理員權限,受權等繁瑣操做,精簡教程,這裏都是使用root帳戶登陸而且使用root權限進行操做。

3.1 安裝JDK

        安裝jdk在這裏不在細數,若是有須要能夠參考該博文(雖然那篇博文用的是ubuntu,可是jdk安裝在CentOS下也同樣):

http://blog.csdn.net/pucao_cug/article/details/68948639

3.2  安裝hadoop

        注意: 3臺機器上都須要重複下面所講的步驟。

3.2.1 上載文件並解壓縮

        在opt目錄下新建一個名爲hadoop的目錄,並將下載獲得的hadoop-2.8.0.tar上載到該目錄下,如圖:

 

    

         進入到該目錄,執行命令:

cd   /opt/hadoop

           執行解壓命令:

 tar  -xvf   hadoop-2.8.0.tar.gz

            說明:3臺機器都要進行上述操做,解壓縮後獲得一個名爲hadoop-2.8.0的目錄。

3.2.2新建幾個目錄

           在/root目錄下新建幾個目錄,複製粘貼執行下面的命令:

 

[plain] view plain copy

  1. mkdir  /root/hadoop  
  2. mkdir  /root/hadoop/tmp  
  3. mkdir  /root/hadoop/var  
  4. mkdir  /root/hadoop/dfs  
  5. mkdir  /root/hadoop/dfs/name  
  6. mkdir  /root/hadoop/dfs/data  

3.2.3 修改etc/hadoop中的一系列配置文件

          修改/opt/hadoop/hadoop-2.8.0/etc/hadoop目錄內的一系列文件。

3.2.3.1 修改core-site.xml

            修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/core-site.xml文件

          在<configuration>節點內加入配置:

 <property>

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

        <value>/root/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

   </property>

   <property>

        <name>fs.default.name</name>

        <value>hdfs://hserver1:9000</value>

   </property>

</configuration>

3.2.3.2 修改hadoop-env.sh

         修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/hadoop-env.sh文件

         將export   JAVA_HOME=${JAVA_HOME}

         修改成:

         export   JAVA_HOME=/opt/java/jdk1.8.0_121

        說明:修改成本身的JDK路徑

3.2.3.3 修改hdfs-site.xml

          修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/hdfs-site.xml文件

          在<configuration>節點內加入配置:

<property>

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

   <value>/root/hadoop/dfs/name</value>

   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>

</property>

<property>

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

   <value>/root/hadoop/dfs/data</value>

   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>

</property>

<property>

   <name>dfs.replication</name>

   <value>2</value>

</property>

 

<property>

      <name>dfs.permissions</name>

      <value>false</value>

      <description>need not permissions</description>

</property>

          說明:dfs.permissions配置爲false後,能夠容許不要檢查權限就生成dfs上的文件,方便卻是方便了,可是你須要防止誤刪除,請將它設置爲true,或者直接將該property節點刪除,由於默認就是true。

3.2.3.4 新建而且修改mapred-site.xml

           在該版本中,有一個名爲mapred-site.xml.template的文件,複製該文件,而後更名爲mapred-site.xml,命令是:

 

[plain] view plain copy

  1. cp   /opt/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml.template     /opt/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml  

          修改這個新建的mapred-site.xml文件,在<configuration>節點內加入配置:

 <property>

    <name>mapred.job.tracker</name>

    <value>hserver1:49001</value>

</property>

<property>

      <name>mapred.local.dir</name>

       <value>/root/hadoop/var</value>

</property>

 

<property>

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

       <value>yarn</value>

</property>

 

3.2.3.5 修改slaves文件

         修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/slaves文件,將裏面的localhost刪除,添加以下內容:

 

[plain] view plain copy

  1. hserver2  
  2. hserver3  

3.2.3.6 修改yarn-site.xml文件

         修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/yarn-site.xml文件,

         在<configuration>節點內加入配置(注意了,內存根據機器配置越大越好,我這裏只配2個G是由於機器不行):

<property>

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

        <value>hserver1</value>

   </property>

   <property>

        <description>The address of the applications manager interface in the RM.</description>

        <name>yarn.resourcemanager.address</name>

        <value>${yarn.resourcemanager.hostname}:8032</value>

   </property>

   <property>

        <description>The address of the scheduler interface.</description>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>${yarn.resourcemanager.hostname}:8030</value>

   </property>

   <property>

        <description>The http address of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>${yarn.resourcemanager.hostname}:8088</value>

   </property>

   <property>

        <description>The https adddress of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.https.address</name>

        <value>${yarn.resourcemanager.hostname}:8090</value>

   </property>

   <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>${yarn.resourcemanager.hostname}:8031</value>

   </property>

   <property>

        <description>The address of the RM admin interface.</description>

        <name>yarn.resourcemanager.admin.address</name>

        <value>${yarn.resourcemanager.hostname}:8033</value>

   </property>

   <property>

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

        <value>mapreduce_shuffle</value>

   </property>

   <property>

        <name>yarn.scheduler.maximum-allocation-mb</name>

        <value>2048</value>

        <discription>每一個節點可用內存,單位MB,默認8182MB</discription>

   </property>

   <property>

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>2.1</value>

   </property>

   <property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>2048</value>

</property>

 

   <property>

        <name>yarn.nodemanager.vmem-check-enabled</name>

        <value>false</value>

</property>

       說明:yarn.nodemanager.vmem-check-enabled這個的意思是忽略虛擬內存的檢查,若是你是安裝在虛擬機上,這個配置頗有用,配上去以後後續操做不容易出問題。若是是實體機上,而且內存夠多,能夠將這個配置去掉。

4啓動hadoop

4.1在namenode上執行初始化

           由於hserver1是namenode,hserver2和hserver3都是datanode,因此只須要對hserver1進行初始化操做,也就是對hdfs進行格式化。

          進入到hserver1這臺機器的/opt/hadoop/hadoop-2.8.0/bin目錄,也就是執行命令:

cd   /opt/hadoop/hadoop-2.8.0/bin

           執行初始化腳本,也就是執行命令:

 ./hadoop  namenode  -format

如圖:

         

      稍等幾秒,不報錯的話,便可執行成功,如圖:      

 

          格式化成功後,能夠在看到在/root/hadoop/dfs/name/目錄多了一個current目錄,並且該目錄內有一系列文件

          如圖:

 

 

4.2在namenode上執行啓動命令

           由於hserver1是namenode,hserver2和hserver3都是datanode,因此只須要再hserver1上執行啓動命令便可。

           進入到hserver1這臺機器的/opt/hadoop/hadoop-2.8.0/sbin目錄,也就是執行命令:

cd    /opt/hadoop/hadoop-2.8.0/sbin

          執行初始化腳本,也就是執行命令:

 ./start-all.sh

         第一次執行上面的啓動命令,會須要咱們進行交互操做,在問答界面上輸入yes回車

如圖:

5測試hadoop

           haddoop啓動了,須要測試一下hadoop是否正常。

          執行命令,關閉防火牆,CentOS7下,命令是:

          systemctl   stop   firewalld.service

         如圖:

         

            hserver1是咱們的namanode,該機器的IP是192.168.119.128,在本地電腦訪問以下地址:

             http://192.168.119.128:50070/

             自動跳轉到了overview頁面

         如圖:

   

 

            在本地瀏覽器裏訪問以下地址:

            http://192.168.119.128:8088/

           自動跳轉到了cluster頁面

           如圖:

    

相關文章
相關標籤/搜索