天天看點

Hadoop2.3完全分布式安裝與配置

一、hadoop基本介紹

hadoop優點

1.高可靠性:hadoop按位存儲和處理資料

2.高擴充性:hadoop是在計算機叢集中完成計算任務,這個叢集可以友善的擴充到幾千台

3.高效性:hadoop能夠在節點之間動态地移動資料,并保證各個節點的動态平衡,是以處理速度快

4.高容錯性:hadoop能夠自動儲存資料的多個副本,并且能夠自動将失敗的任務重新配置設定

5.低成本:hadoop是開源的,叢集是由廉價的pc機組成

hadoop架構群組件

hadoop是一個分布式系統基礎架構,底層是hdfs(hadoop distributed file system)分布式檔案系統,它存儲hadoop叢集中所有存儲節點上的檔案(64mb塊),hdfs上一層是mapreduce引擎(分布式計算架構),對分布式檔案系統中的資料進行分布式計算。

1.hdfs架構

namenode:hadoop叢集中隻有一個namenode,它負責管理hdfs的目錄樹和相關檔案的中繼資料資訊

sencondary namenode:有兩個作用,一是鏡像備份,二是日志與鏡像定期合并,并傳輸給namenode

datanode:負責實際的資料存儲,并将資訊定期傳輸給namenode

2.mapreduce架構(hadoop0.23以後采用mapreduce v2.0或yarn)

yarn主要是把jobtracker的任務分為兩個基本功能:資源管理和任務排程與監控,resourcemanager和每個節點(nodemanager)組成了新處理資料的架構。

resourcemanager:負責叢集中的所有資源的統一管理和配置設定,接受來自各個節點(nodemanager)的資源彙報資訊,并把這些資訊按照一定的政策配置設定給各種應用程式(applicationmaster)。

nodemanager:與applicationmaster承擔了mr1架構中的tasktracker角色,負責将本節點上的資源使用情況和任務運作進度彙報給resourcemanager。

Hadoop2.3完全分布式安裝與配置

           mapreduce v1.0架構(圖1)

Hadoop2.3完全分布式安裝與配置

            mapreduce v2.0架構(圖2)

環境介紹:

master-hadoop 192.168.0.201

slave1-hadoop 192.168.0.202

slave2-hadoop 192.168.0.203

參考官方文檔:http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-common/clustersetup.html

hadoop三種運作方式:單節點方式(單台)、單機僞分布方式(一個節點的叢集)與完全分布式(多台組成叢集)

二、準備環境

1.hadoop是用java開發的,必須要安裝jdk1.6或更高版本

2.hadoop是通過ssh來啟動slave主機中的守護程序,必須安裝openssh

3.hadoop更新比較快,我們采用最新版hadoop2.3來安裝

4.配置對應hosts記錄,關閉iptables和selinux(過程略)

5.建立相同使用者及配置無密碼認證

三、安裝環境(注:三台配置基本相同)

1.安裝jdk1.7

1

2

3

4

5

6

7

8

9

10

11

12

<code>[root@master-hadoop ~]</code><code># tar zxvf jdk-7u17-linux-x64.tar.gz</code>

<code>[root@master-hadoop ~]</code><code># mv jdk1.7.0_17/ /usr/local/jdk1.7</code>

<code>[root@slave1-hadoop ~]</code><code># vi /etc/profile    #末尾添加變量</code>

<code>java_home=</code><code>/usr/local/jdk1</code><code>.7</code>

<code>path=$path:$java_home</code><code>/bin</code>

<code>classpath=$java_home</code><code>/lib</code><code>:$java_home</code><code>/jre/lib</code>

<code>export</code> <code>java_home path classpath </code>

<code>[root@slave1-hadoop ~]</code><code># source /etc/profile</code>

<code>[root@slave1-hadoop ~]</code><code># java -version      #顯示版本說明配置成功</code>

<code>java version</code><code>"1.7.0_17"</code>

<code>java(tm) se runtimeenvironment (build 1.7.0_17-b02)</code>

<code>java hotspot(tm) 64-bitserver vm (build 23.7-b01, mixed mode)</code>

2.建立hadoop使用者,指定相同uid

<code>[root@master-hadoop ~]</code><code># useradd -u 600 hadoop</code>

<code>[root@master-hadoop ~]</code><code># passwd hadoop</code>

<code>changing password </code><code>for</code> <code>userhadoop.</code>

<code>new password:</code>

<code>retype new password:</code>

<code>passwd</code><code>: all authenticationtokens updated successfully.</code>

3.配置ssh無密碼登入(注:master-hadoop本地也要實作無密碼登入)

13

14

15

16

17

18

<code>[root@master-hadoop ~]</code><code># su - hadoop</code>

<code>[hadoop@master-hadoop ~]$ </code><code>ssh</code><code>-keygen -t rsa     </code><code>#一直回車生成密鑰</code>

<code>[hadoop@master-hadoop ~]$ </code><code>cd</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>

<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>ls</code>

<code>id_rsa  id_rsa.pub</code>

<code>[hadoop@slave1-hadoop ~]$ </code><code>mkdir</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code>   <code>#登入兩台建立.ssh目錄</code>

<code>[hadoop@slave2-hadoop ~]$ </code><code>mkdir</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code>

<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>scp</code> <code>id_rsa.pub hadoop@slave1-hadoop:</code><code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>

<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>scp</code> <code>id_rsa.pub hadoop@slave2-hadoop:</code><code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>

<code>[hadoop@slave1-hadoop ~]$ </code><code>cd</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>

<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>cat</code> <code>id_rsa.pub &gt;&gt; authorized_keys</code>

<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>chmod</code> <code>600 authorized_keys</code>

<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>chmod</code> <code>700 ../.</code><code>ssh</code><code>/   </code><code>#目錄權限必須設定700</code>

<code>[root@slave1-hadoop ~]</code><code># vi /etc/ssh/sshd_config   #開啟rsa認證</code>

<code>rsaauthentication </code><code>yes</code>

<code>pubkeyauthentication </code><code>yes</code>

<code>authorizedkeysfile .</code><code>ssh</code><code>/authorized_keys</code>

<code>[root@slave1-hadoop ~]</code><code># service sshd restart</code>

四、hadoop的安裝與配置(注:三台伺服器配置一樣,使用scp複制過去)

<code>[root@master-hadoop ~]</code><code># tar zxvf hadoop-2.3.0.tar.gz -c /home/hadoop/</code>

<code>[root@master-hadoop ~]</code><code># chown hadoop.hadoop -r /home/hadoop/hadoop-2.3.0/</code>

<code>[root@master-hadoop ~]</code><code># vi /etc/profile   #添加hadoop變量,友善使用</code>

<code>hadoop_home=</code><code>/home/hadoop/hadoop-2</code><code>.3.0/</code>

<code>path=$path:$hadoop_home</code><code>/bin</code><code>:$hadoop_home</code><code>/sbin</code>

<code>export</code> <code>hadoop_home path</code>

<code>[root@master-hadoop ~]</code><code># source /etc/profile</code>

1. hadoop-env.sh設定jdk路徑

<code>[hadoop@master-hadoop ~]$ </code><code>cd</code> <code>hadoop-2.3.0</code><code>/etc/hadoop/</code>

<code>[hadoop@master-hadoop hadoop]$ </code><code>vi</code> <code>hadoop-</code><code>env</code><code>.sh</code>

<code>export</code> <code>java_home=</code><code>/usr/local/jdk1</code><code>.7/</code>

2.slaves設定從節點

<code>[hadoop@master-hadoop hadoop]$ </code><code>vi</code> <code>slaves</code>

<code>slave1-hadoop </code>

<code>slave2-hadoop</code>

3.core-site.xml

19

20

21

22

23

24

25

26

27

28

29

<code>&lt;configuration&gt;</code>

<code>&lt;property&gt;</code>

<code>&lt;name&gt;fs.defaultfs&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;hdfs:</code><code>//master-hadoop</code><code>:9000&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;</code><code>/property</code><code>&gt;</code>

<code>&lt;name&gt;io.</code><code>file</code><code>.buffer.size&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;131072&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;hadoop.tmp.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;</code><code>file</code><code>:</code><code>/home/hadoop/tmp</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;</code><code>/configuration</code><code>&gt;</code>

<code>4.hdfs-site.xml</code>

<code>&lt;name&gt;dfs.namenode.name.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;</code><code>file</code><code>:</code><code>/home/hadoop/dfs/name</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;dfs.namenode.data.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;</code><code>file</code><code>:</code><code>/home/hadoop/dfs/data</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;dfs.replication&lt;</code><code>/name</code><code>&gt;    </code><code>#資料副本數量,預設3,我們是兩台設定2</code>

<code>&lt;value&gt;2&lt;</code><code>/value</code><code>&gt; </code>

6.yarn-site.xml

30

<code>&lt;name&gt;yarn.resourcemanager.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:8032&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;yarn.resourcemanager.scheduler.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:8030&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;yarn.resourcemanager.resource-tracker.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:8031&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;yarn.resourcemanager.admin.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:8033&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;yarn.resourcemanager.webapp.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:8088&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;yarn.nodemanager.aux-services&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;mapreduce_shuffle&lt;</code><code>/value</code><code>&gt;</code>

<code>   </code><code>&lt;name&gt;yarn.nodemanager.aux-services.mapreduce.shuffle.class&lt;</code><code>/name</code><code>&gt;</code>

<code>   </code><code>&lt;value&gt;org.apache.hadoop.mapred.shufflehandler&lt;</code><code>/value</code><code>&gt;</code>

7.mapred-site.xml

<code>&lt;name&gt;mapreduce.framework.name&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;yarn&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;mapreduce.jobhistory.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:10020&lt;</code><code>/value</code><code>&gt;</code>

<code>&lt;name&gt;mapreduce.jobhistory.webapp.address&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;value&gt;master-hadoop:19888&lt;</code><code>/value</code><code>&gt;</code>

五、格式化檔案系統并啟動

1.格式化新的分布式檔案系統(hdfs namenode -format)

Hadoop2.3完全分布式安裝與配置

2.啟動hdfs檔案系統并使用jps檢查守護程序是否啟動

Hadoop2.3完全分布式安裝與配置
Hadoop2.3完全分布式安裝與配置

可以看到master-hadoop已經啟動namenode和secondarynamenode程序,slave-hadoop已經啟動datanode程序說明正常。

3.啟動新mapreduce架構(yarn)

Hadoop2.3完全分布式安裝與配置
Hadoop2.3完全分布式安裝與配置

可以看到master-hadoop已經啟動resourcemanger程序,slave-hadoop已經啟動nodemanager程序說明正常。

4.檢視叢集狀态

Hadoop2.3完全分布式安裝與配置

5.通過web檢視資源(http://192.168.0.201:8088)

Hadoop2.3完全分布式安裝與配置

6、檢視hdfs狀态(http://192.168.0.201:50070)

Hadoop2.3完全分布式安裝與配置