問題導讀
1.從本文部署實際部署,總結本地模式、偽分布、分布式的區別是什么?
2.單機是否是偽分布?
3.本地模式是否可以運行mapreduce?
來源:about雲
http://www.aboutyun.com/thread-12798-1-1.html
hadoop2.7發布,這一版不太適合用於生產環境,但是並不影響學習:由於hadoop安裝方式有三種,並且三種安裝方式都可以在前面的基礎上繼續配置,分別是:
- 本地模式
- 偽分布
- 分布式
###############################################
1.准備
安裝jdk1.7參考
linux(ubuntu)安裝Java jdk環境變量設置及小程序測試
測試:
Java -version
安裝ssh
sudo apt-get install ssh
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ export HADOOP\_PREFIX=/usr/local/hadoop
最后達到無密碼登錄
ssh localhost
安裝rsync
sudo apt-get install rsync
修改網卡:
注釋掉127.0.1.1 ubuntu
添加新的映射
10.0.0.81 ubuntu
這里必須修改,否則后面會遇到連接拒絕等問題
2.安裝
進入配置文件目錄
我這里是
~/hadoop-2.7.0/etc/hadoop
修改配置文件:
etc/hadoop/hadoop-env.sh
添加JAVA_HOME、HADOOP_COMMON_HOME
export JAVA_HOME=/usr/jdk
export HADOOP_COMMON_HOME=~/hadoop-2.7.0
配置環境變量
sudo nano /etc/environment
增加hadoop配置
將下面添加到變量PATH中
/home/aboutyun/hadoop-2.7.0/bin:/home/aboutyun/hadoop-2.7.0/sbin:
########################################################
3.本地模式驗證[可忽略]
所謂的本地模式:在運行程序的時候,比如wordcount是在本地磁盤運行的
上面已經配置完畢,我們對其測試,分別執行面命令:
注意: bin/hadoop的執行條件是在hadoop_home中,我這里是
$ mkdir input
$ cp etc/hadoop/*.xml input
$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*
##################################################################
上面本地模式,我們知道就可以,我們下面繼續配置偽分布模式
4.偽分布模式
我這里的全路徑:/home/aboutyun/hadoop-2.7.0/etc/hadoop
修改文件etc/hadoop/core-site.xml
添加如下內容:
含義:接收Client連接的RPC端口,用於獲取文件系統metadata信息。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改etc/hadoop/hdfs-site.xml:
添加如下內容:
含義:備份只有一份
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
5.偽分布模式
1.格式化namenode
hdfs namenode -format
有的地方使用
bin/hdfs namenode -format
如果配置的環境變量直接使用hdfs namenode -format即可
2.啟動集群
start-dfs.sh
這時候單節點偽分布就已經安裝成功了
驗證
輸入下面
http://localhost:50070/
如果是在虛擬機中安裝,但是在宿主主機中訪問,需要輸入虛擬機ip地址
這里虛擬機ip地址是10.0.0.81
所以,我這里是
http://10.0.0.81:50070/
配置到這里也是可以的,我們同樣可以運行wordcount,也就是我們的mapreduce不運行在yarn上。如果想讓程序運行在yarn上,繼續下面配置
#####################################################
6.配置Yarn
1.修改配置文件
修改配置文件mapred-site.xml
編輯文件etc/hadoop/mapred-site.xml,添加下面內容由於etc/hadoop中沒有mapred-site.xml,所以對mapred-queues.xml.template復制一份
cp mapred-site.xml.template mapred-site.xml
然后編輯文件mapred-site.xml
添加
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
最后形式:
修改配置文件yarn-site.xml
添加如下內容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2.啟動yarn
start-yarn.sh
(由於我這里已經配置了環境變來那個,所以在哪個地方都可以運行start-yarn.sh)
如果你沒有配置環境變量,則需要進入hadoop_home,執行下面命令
sbin/start-yarn.sh
3.驗證
啟動yarn之后,輸入
http://localhost:8088/
即可看到下面界面
下一篇hadoop2.7 運行wordcount
遇到問題
問題1:
Error: Could not find or load main class
org.apache.hadoop.hdfs.server.namenode.NameNode
解決辦法:
在~/hadoop-2.7.0/etc/hadoop/hadoop-env.sh中添加
export HADOOP_COMMON_HOME=~/hadoop-2.7.0
重啟生效
問題2:
格式化Java_home not found
bin/hdfs namenode -format
在/etc/environment 中添加
export JAVA_HOME=/usr/jdk
生效
source /etc/environment
重啟[如還不行,重啟]
sudo init 6