hadoop_cluster搭建

配置環境:
ubuntu 14.0.4 +hadoop.2.7.1
1.設置用戶sudo權限

chmod u+w /etc/sudoers
vim /etc/sudoers

在root ALL=(ALL) ALL添加
cms(這是我的用戶名根據實際情況填寫) ALL=(ALL) ALL

chmod u-w /etc/sudoers

2.設置靜態IP
systems settings---network----wired---options
彈出框,選擇ipv4 settings
地址為192.168.31.131(注意ip地址、網關、DNS等與自動方式的ip一致)

需設置的內容

3.安裝jdk
4.配置另外兩臺機器
虛擬機--管理--克隆
選擇(虛擬機中的當前狀態--創建連接克隆)
設置靜態ip,分別為192.168.31.132,192.168.31.133

5.集群環境配置
1)修改當前機器名稱
修改三臺機器里文件/etc/hostname里的值即可,修改成功后用hostname命令查看當前主機名是否設置成功。

一定要將圖中該行注釋掉,否則最后通過命令hdfs dfsadmin -report
查看 DataNode 是否正常啟動時 Live datanodes 為 0 (個人在這個坑里搗鼓了好久)

特別注意

2)配置hosts文件
在所有機器/etc/hosts文件后面加
192.168.31.131 Master
192.168.31.132 Slave1
192.168.31.133 Slave2
ping 測試

Paste_Image.png

配置ssh免登錄
1)三臺機器安裝ssh
2)Master機器利用ssh-keygen命令生成一個無密碼密鑰對。
在Master機器上執行以下命令:
ssh-keygen –t rsa
生成的密鑰對:id_rsa(私鑰)和id_rsa.pub(公鑰),默認存儲在/home/用戶名/.ssh目錄下。


查看"/home/用戶名/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產的無密碼密鑰對。
3)接著在Master節點上做如下配置,把id_rsa.pub追加到授權的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
查看是否成功


4)將公鑰復制到slave1和slave2
在master上執行

ssh-copy-id -i ~/.ssh/id_rsa.pub slave2```
并且ssh slave1等測試。

####hadoop配置文件(路徑hadoop.2.7.1/etc/hadoop)(在master上配置)
#####安裝hadoop
1.在官網上下載hadoop-2.7.1.tar.gz
2.解壓:```tar -zxvf hadoop-2.7.1.tar.gz```
3.配置環境變量
打開/etc/profile
添加(連同java的環境變量,一起給出):

![環境變量](http://upload-images.jianshu.io/upload_images/1908836-6dcb17be3a5221d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```soure /etc/profile```  讓配置文件立即執行
####修改配置文件
這里我只把我的實例貼出來,經供參考,更多詳細配置請參照官方文檔
1.hadoop-env.sh
該文件是 hadoop運行基本環境的配置,需要修改的為 java虛擬機的位置。
故在該文件中修改 JAVA_HOME值為本機安裝位置

The java implementation to use.

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

2.core-site.xml

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop</value> #記住該位置,為防止找不到該文件位置以及hadoop namenode -format不成功,每次在應在/opt新建一個hadoop目錄
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

3.hdfs-site.xml
```<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///opt/hadoop/datanode</value>
  </property>
  <property>#該namenode屬性在復制到slave中去時應刪除
    <name>dfs.namenode.name.dir</name>
    <value>file:///opt/hadoop/namenode</value>
  </property>
    <property>#該namenode屬性在復制到slave中去時應刪除
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
<property>#該namenode屬性在復制到slave中去時應刪除
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

4.mapred-site.xml
這個是mapreduce 任務的配置,由于 hadoop2.x使用了yarn 框架,所以要實現分布式部署,必須在 mapreduce.framework.name屬性下配置為yarn。
版本中/etc/hadoop/ 中找不到 mapred-site.xml文件,默認情況下,/hadoop-2。7.1/etc/hadoop/文件夾下有 mapred.xml.template文件
復制并重命名
cp mapred-site.xml.template mapred-site.xml
編輯器打開此新建文件
vi mapred-site.xml
然后編輯mapred-site.xml

<configuration>
<property>  
          <name>mapreduce.framework.name</name>  
          <value>yarn</value>  
          <description>Execution framework set to Hadoop YARN.</description>  
     </property>
<property>  
          <name>mapreduce.jobhistory.address</name>  
          <value>master:10020</value>  
          <description>MapReduce JobHistory Server host:port, default port is 10020</description>  
     </property>  
     <property>  
          <name>mapreduce.jobhistory.webapp.address</name>  
          <value>master:19888</value>  
          <description>MapReduce JobHistory Server Web UI host:port, default port is 19888.</description>  
     </property>  

</configuration>

jobhistory是 Hadoop自帶了一個歷史服務器,用于記錄 Mapreduce歷史作業。默認情況下, jobhistory沒有啟動,可用手動通過命令啟動,如下所示:
Shell代碼
``jobhistory-daemon.sh start historyserver```

5.yarn-site.xml
該文件為yarn 框架的配置

<configuration>
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
       <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value>                                                                                                  
    </property>


<!-- Site specific YARN configuration properties -->

</configuration>

6.slaves
該文件里面保存所有slave節點的信息,hdfs
寫入以下內容(hosts里從機的主機名):

Slave1
Slave2

7.向節點服務器slave1、slave2復制我們剛剛在master服務器上配置好的hadoop

scp -r  hadoop-2.7.1 slave1 
scp -r  hadoop-2.7.1 slave2 

配置slave1、slave2
1)配置環境變量,/etc/profile 與上面master配置一致
2)刪除hdfs-site中的多余屬性(在前面已標注)

啟動hadoop

在每次namenod之前,最好
在三個機器/opt下 先刪除臨時文件 hadoop
然后新建 hadoop/
修改權限:

chown -R cms hadoop

避免
hadoop namenode -format 失敗
1)執行hadoop namenode -format
出現

則成功格式化HDFS
如果不成功,執行上述刪除臨時文件夾等步驟再格式化

2)在master上啟動集群
start-dfs.sh
start-yarn.sh

3)用jps檢驗各后臺進程是否成功啟動
master


slave1

slave2

缺少任一進程都表示出錯。另外還需要在 Master 節點上通過命令 hdfs dfsadmin -report
查看 DataNode 是否正常啟動,如果 Live datanodes 不為 0 ,則說明集群啟動成功。例如我這邊一共有2 個 Datanodes:

master:8088能顯示你的集群狀態
master: 50070能進行一些節點的管理

#######向hadoop集群系統提交第一個mapreduce任務
1)hadoop fs -mkdir /tmp 在虛擬分布式文件系統上創建一個測試目錄tmp
2)hadoop fs -put 1.txt /tmp/1.txt
將當前目錄下的帶有任意單詞的文件復制到虛擬分布式文件系統中
例如,我的文件

3)hadoop fs -ls /tmp查看文件系統中是否存在我們所復制的文件


4)復制hadoop安裝目錄下的mapreduce example 的jar 包到/opt目錄下
cp /hadoop-2.7.1/share/mapreduce/hadoop-mapreduce-examples-2.7.1.jar /opt
5)運行單詞計數mapreduce任務
hadoop jar /opt/hadoop-mapreduce-examples-2.7.1.jar wordcount /tmp/1.txt /tmp/1_out

運行成功

4)查看任務輸出

li  1
ou  2
rt  2
we  3```
至此,集群搭建成功
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容