配置環(huán)境:
ubuntu 14.0.4 +hadoop.2.7.1
1.設置用戶sudo權(quán)限
chmod u+w /etc/sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL添加
cms(這是我的用戶名根據(jù)實際情況填寫) ALL=(ALL) ALL
chmod u-w /etc/sudoers
2.設置靜態(tài)IP
systems settings---network----wired---options
彈出框承二,選擇ipv4 settings
地址為192.168.31.131(注意ip地址熟丸、網(wǎng)關弯洗、DNS等與自動方式的ip一致)
3.安裝jdk
4.配置另外兩臺機器
虛擬機--管理--克隆
選擇(虛擬機中的當前狀態(tài)--創(chuàng)建連接克禄峙)
設置靜態(tài)ip,分別為192.168.31.132聘鳞,192.168.31.133
5.集群環(huán)境配置
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 測試
配置ssh免登錄
1)三臺機器安裝ssh
2)Master機器利用ssh-keygen命令生成一個無密碼密鑰對。
在Master機器上執(zhí)行以下命令:
ssh-keygen –t rsa
生成的密鑰對:id_rsa(私鑰)和id_rsa.pub(公鑰)现柠,默認存儲在/home/用戶名/.ssh
目錄下院领。
查看"/home/用戶名/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產(chǎn)的無密碼密鑰對够吩。
3)接著在Master節(jié)點上做如下配置比然,把id_rsa.pub追加到授權(quán)的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
查看是否成功
4)將公鑰復制到slave1和slave2
在master上執(zhí)行
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2```
并且ssh slave1等測試周循。
####hadoop配置文件(路徑hadoop.2.7.1/etc/hadoop)(在master上配置)
#####安裝hadoop
1.在官網(wǎng)上下載hadoop-2.7.1.tar.gz
2.解壓:```tar -zxvf hadoop-2.7.1.tar.gz```
3.配置環(huán)境變量
打開/etc/profile
添加(連同java的環(huán)境變量强法,一起給出):
![環(huán)境變量](http://upload-images.jianshu.io/upload_images/1908836-6dcb17be3a5221d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
```soure /etc/profile``` 讓配置文件立即執(zhí)行
####修改配置文件
這里我只把我的實例貼出來,經(jīng)供參考湾笛,更多詳細配置請參照官方文檔
1.hadoop-env.sh
該文件是 hadoop運行基本環(huán)境的配置饮怯,需要修改的為 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 框架临扮,所以要實現(xiàn)分布式部署论矾,必須在 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歷史作業(yè)寥袭。默認情況下, 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節(jié)點的信息,hdfs
寫入以下內(nèi)容(hosts里從機的主機名):
Slave1
Slave2
7.向節(jié)點服務器slave1队寇、slave2復制我們剛剛在master服務器上配置好的hadoop
scp -r hadoop-2.7.1 slave1
scp -r hadoop-2.7.1 slave2
配置slave1膘掰、slave2
1)配置環(huán)境變量,/etc/profile 與上面master配置一致
2)刪除hdfs-site中的多余屬性(在前面已標注)
啟動hadoop
在每次namenod之前,最好
在三個機器/opt下 先刪除臨時文件 hadoop
然后新建 hadoop/
修改權(quán)限:
chown -R cms hadoop
避免
hadoop namenode -format
失敗
1)執(zhí)行hadoop namenode -format
出現(xiàn)
則成功格式化HDFS
如果不成功识埋,執(zhí)行上述刪除臨時文件夾等步驟再格式化
2)在master上啟動集群
start-dfs.sh
start-yarn.sh
3)用jps檢驗各后臺進程是否成功啟動
master
slave1
slave2
缺少任一進程都表示出錯凡伊。另外還需要在 Master 節(jié)點上通過命令
hdfs dfsadmin -report
查看 DataNode 是否正常啟動,如果 Live datanodes 不為 0 窒舟,則說明集群啟動成功系忙。例如我這邊一共有2 個 Datanodes:
master:8088能顯示你的集群狀態(tài)
master: 50070能進行一些節(jié)點的管理
#######向hadoop集群系統(tǒng)提交第一個mapreduce任務
1)hadoop fs -mkdir /tmp
在虛擬分布式文件系統(tǒng)上創(chuàng)建一個測試目錄tmp
2)hadoop fs -put 1.txt /tmp/1.txt
將當前目錄下的帶有任意單詞的文件復制到虛擬分布式文件系統(tǒng)中
例如,我的文件
3)hadoop fs -ls /tmp
查看文件系統(tǒng)中是否存在我們所復制的文件
4)復制hadoop安裝目錄下的mapreduce example 的jar 包到/opt目錄下
cp /hadoop-2.7.1/share/mapreduce/hadoop-mapreduce-examples-2.7.1.jar /opt
5)運行單詞計數(shù)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```
至此惠豺,集群搭建成功