hadoop2.5.1叢集部署(完全分散式)

hadoop2.5.1叢集部署(完全分散式)

hadoop2.5完全分散式

環境介紹:

環境介紹:3臺虛擬機器安裝centos6.464位、jdk1.7 64位、hadoop2.5.1 64位

 

主機配置規劃

1. 修改主機名和/etc/hosts檔案

1)修改主機名(非必要)

vi /etc/sysconfig/network  
HOSTNAME=m1

重啟後生效。

2)/etc/hosts是ip地址和其對應主機名檔案,使機器知道ip和主機名對應關係,格式如下:

修改/etc/hosts檔案,增加如下地址對映:

192.168.0.108        m1
192.168.0.109        s1
192.168.0.110        s2

2.配置免密碼登陸SSH

1)生成金鑰:

ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa  

以上是兩個單引號。

2)將id_dsa.pub(公鑰)追加到授權的key中:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  

3)將認證檔案複製到其它節點上:

scp ~/.ssh/authorized_keys 192.168.0.109:~/.ssh/  
scp ~/.ssh/authorized_keys 192.168.0.110:~/.ssh/  

3)測試:

ssh s1  

3.各節點上安裝jdk

1)選擇的版本是jdk-7u71-linux-x64.tar.gz,
2)上傳到usr/local/download使用者目錄下,新增執行許可權

chmod u x jdk-7u71-linux-x64.tar.gz  

4) 安裝

 

tar –zvxf jdk-7u71-linux-x64.tar.gz–C /usr/local/program/  

 

重新命名jdk為jdk1.7 (用mv命令)

 

5) 配置環境變數:vi /etc/profile加入以下三行

 

#JAVA_HOME  
export JAVA_HOME=/usr/local/program/jdk1.7  
export PATH=$JAVA_HOME/bin:$PATH  

5)執行source /etc/profile使環境變數的配置生效
6)執行java –version檢視jdk版本,驗證是否成功。

 

4. Hadoop安裝

每臺節點都要安裝hadoop。上傳hadoop-2.5.1.tar.gz到使用者usr/local/download目錄下。

1) 解壓

 

tar -zvxf hadoop-2.5.1.tar.gz  -C/usr/local/program/

 

2) 新增環境變數:vi  /etc/profile,尾部新增如下

 

export JAVA_HOME=/usr/local/program/jdk1.7
exportHADOOP_HOME=/usr/local/program/hadoop-2.5.1
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
exportCLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH  

設定立即生效:

 

source /etc/profile  

 

3) 修改Hadoop配置檔案

(1) core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://m1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/program/hadoop_tmp</value>
</property>
</configuration>  

(2)    hdfs-site.xml 

 

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>m1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/program/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/program/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration> 

 

注:訪問namenode的hdfs使用50070埠,訪問datanode的webhdfs使用50075埠。要想不區分埠,直接使用namenode的IP和埠進行所有的webhdfs操作,就需要在所有的datanode上都設定hdfs-site.xml中的dfs.webhdfs.enabled為true。

(3) mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>m1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>m1:19888</value>
</property>
</configuration> 

jobhistory是Hadoop自帶了一個歷史伺服器,記錄Mapreduce歷史作業。預設情況下,jobhistory沒有啟動,可用以下命令啟動:

sbin/mr-jobhistory-daemon.sh start historyserver  

(4)   yarn-site.xml

<configuration>
<!-- Site specific YARN configurationproperties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>m1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>m1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>m1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>m1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>m1:8088</value>
</property>
</configuration>  

(5) slaves

 

S1  
S2

 

(6) 分別在hadoop-env.sh和yarn-env.sh中新增JAVA_HOME

 

export JAVA_HOME=/usr/local/program/jdk1.7  

 

5.執行Hadoop

1)格式化

hdfs namenode –format  

 

2) 啟動Hadoop

 

start-dfs.sh   
start-yarn.sh  

 

也可以用一條命令:

 

start-all.sh  

 

3) 停止Hadoop

 

stop-all.sh  

 

4)jps檢視程序

1.  7692 ResourceManager  
2.  8428 JobHistoryServer  
3.  7348 NameNode  
4.  14874 Jps  
5.  7539 SecondaryNameNode  

5)通過瀏覽器檢視叢集執行狀態

(1)http://192.168.0.108:50070

(2)http://192.168.0.108:8088/

(3)192.168.0.108:19888

 

 

6. 執行Hadoop自帶的wordcount示例

1)建立輸入檔案:

1.  vi wordcount.txt 
2.  輸入內容為:
3.  hello you 
4.  hello me
5.  hello everyone 

2)建立目錄

 

hadoop fs -mkdir /data/wordcount
hadoop fs –mkdir /output/ 

目錄/data/wordcount用來存放Hadoop自帶的WordCount例子的資料檔案,執行這個MapReduce任務的結果輸出到/output/wordcount目錄中。

3)上傳檔案

 

hadoop fs -put wordcount.txt/data/wordcount/ 

 

4)執行wordcount程式

 

hadoop jar usr/local/program/Hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /data/wordcount /output/wordcount/  

 

5)檢視結果

 

hadoop fs -text /output/wordcount/part-r-00000  

 

1.   [[email protected]]# hadoop fs -text /output/wordcount/part-r-00000
2.  everyone        1
3.  hello  3
4.  me     1
5.  you    1