1. 程式人生 > >Linux上安裝Hadoop集群(CentOS7+hadoop-2.8.0)

Linux上安裝Hadoop集群(CentOS7+hadoop-2.8.0)

hup dem current 格式 default dmv framework server1 上進

1下載hadoop

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

2.1安裝3個機器

2.2檢查機器名稱

2.3修改/etc/hosts文件

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

2.5 在hserver1上創建authorized_keys文件

2.6將authorized_keys文件復制到其他機器

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

2.7.1在hserver1上進行測試

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個機器,機器名稱分別叫hserver1、hserver2、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頁面

如圖:

技術分享圖片

Linux上安裝Hadoop集群(CentOS7+hadoop-2.8.0)