hadoop2.7.3偽分布式環境搭建詳細安裝過程

hadoop的安裝

新建hadoop目錄,并創建source文件夾用來存放相關的軟件。

mkdir /opt/hadoop
mkdir /opt/hadoop/source

# 解壓安裝
tar -xzvf /usr/local/hadoop-2.7.3.tar.gz
#將解壓后的文件夾移動到 hadoop目錄下
mv hadoop-2.7.3 /opt/hadoop

配置環境變量

編輯配置文件

vim /etc/profile

#添加如下內容

#HADOOP
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
# hadoop data direcotory
export HADOOP_DATA_DIR=/mnt/hdfs
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

#使配置文件生效
source /etc/profile

#更改文件所有者
chown hadoop $HADOOP_HOME

建立數據存儲目錄namenode和datanode

環境變量HADOOP_DATA_DIR=/mnt/hdfs

#建立目錄
mkdir $HADOOP_DATA_DIR/namenode
mkdir $HADOOP_DATA_DIR/datanode

#更改文件所有者
chown hadoop /mnt/hdfs/namenode
chown hadoop /mnt/hdfs/datanode

修改hadoop配置文件

進入相應的路徑

cd /opt/hadoop/hadoop-2.7.3/etc/hadoop

對要修改的文件進行備份

cp core-site.xml core-site.xml.bak
cp hdfs-site.xml hdfs-site.xml.bak
cp yarn-site.xml yarn-site.xml.bak
cp hadoop-env.sh hadoop-env.sh.bak
cp mapred-site.xml.template mapred-site.xml

修改hadoop-env.sh

# 將變量改成常量即路徑!!!不然會找不到JAVA_HOME
export JAVA_HOME=$JAVA_HOME //默認
export JAVA_HOME=/opt/IBM/WebSphere/AppServer/java //改成java安裝路徑

**修改core-site.xml **
在<configuration></configuration>增加hdfs的端口信息
增加的內容如下:

<property> 
  <name>fs.default.name</name> 
  <value>hdfs://localhost:9000</value>
</property> 

<property>
<!-- 設置每個節點臨時文件目錄 --> 
  <name>hadoop.tmp.dir</name> 
<!-- 當前用戶須要對此目錄有讀寫權限,啟動集群時自動創建 -->
  <value>/home/tmp</value>    
</property> 

修改hdfs-site.xml
在<configuration></configuration>增加以下內容:

<property>
<!-- 設置數據的備份數為1--> 
 <name>dfs.replication</name>
 <value>1</value> 
</property> 

<property>
 <name>dfs.namenode.dir</name>
 <value>file:/mnt/hdfs/namenode</value> 
</property> 

<property>
 <name>dfs.datanode.dir</name>
 <value>file:/mnt/hdfs/datanode</value> 
</property>

修改mapred-site.xml文件

<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value> 
</property>

修改yarn-site.xml文件
在<configuration></configuration>增加以下內容:

<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property> 

<property>
 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>           
 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

啟動hadoop

  1. 格式化namenode
    hadoop namenode -format
  2. 啟動所有hadoop守護進程
    start-all.sh
  3. 查看守護進程是否全部啟動
    jps

hadoop全部守護進程啟動應該有5個,如下:


遇到的錯誤

注意:
在搭建過程中遇到報錯一定要去查看日志,然后再去解決問題,會事半功倍。錯誤日志所在目錄為:hadoop的安裝路徑/logs

Could not find the main class

hadoop格式化時報錯org.apache.hadoop.hdfs.server.namenode.NameNode。。。
我這里是由于之前安裝過cognos,java環境變量設置的是cognos的自帶java環境。
解決辦法

  1. 下載java
    yum install java*
    下載完成后可以看到下載了多個java版本,從1.5到1.7。這里我們選擇使用1.7版本。
  2. 利用linux下的多版本管理軟件alternatives來實現jdk的版本更改
    在/usr/lib/jvm文件夾下時間存儲了各個jdk版本的軟件,而alternatives正是通過修改它的java引用達到版本切換的目的。
  3. 使用alternatives實現版本切換
  • 查看相應的jdk是否在redhat的jdk菜單里。并選擇序號,回車即可;
    update-alternatives --config java
    update-alternatives --config javac


  1. java -version,javac -version查看當前jdk版本
  2. 如果java版本沒有進行更改,則需要在環境變量path中添加選擇的java變量。
    通過如下命令可以在$PATH的開始或末尾添加jdk的環境變量(bin目錄下保存了java, javac, javah等可執行命令)
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

由于執行的時候總是從$PATH的開始搜索可執行文件的位置,所以如果環境變量中已經設置了一個jdk,那么把新的jdk設置在PATH的開始才會有用。

No route to host

jps發現少了nodemanager,于是查看日志文件hadoop-root-datanode-cognos.log
發現報了一下錯誤:


解決辦法
先檢查防火墻是否關閉。是關閉的。然后檢查hosts,發現ip地址出錯了。進行更改。

DataNode: Initialization failed for Block pool

格式化并啟動所有進程后沒有datanode進程
查看datanode日志發現

#java.io.IOException: Incompatible clusterIDs in /home/tmp/dfs/data: namenode clusterID = CID-07c55851-43ac-4c60-8920-4222ebdae886; datanode clusterID = CID-f3af4a31-2c73-4a0d-a6f0-8e1d310df111
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
    at java.lang.Thread.run(Thread.java:744)
#2017-01-11 09:20:00,862 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to cognos/172.16.7.191:9000. Exiting. 
#java.io.IOException: All specified directories are failed to load.

這是由于datanode的clusterID 和 namenode的clusterID 不匹配造成的。
造成這個原因的操作是我剛開始配置core-site.xml的時候,hdfs的value配置的是:hdfs://localhost:9000。而后來我又改成了hdfs://172.16.7.191:9000。這導致在兩次執行格式化操作的時候datanode的clusterID 和 namenode的clusterID 不匹配。

解決辦法

  1. 將/home/tmp/dfs/data/current目錄里的version文件的clusterID替換成/home/tmp/dfs/name/current目錄下的version文件里的clusterID
  2. 執行重啟操作 start-dfs.sh 然后用 jps命令查看 就可以看到namenode已被啟動

參考文章:
jdk版本切換
通過web端口查看主節點、slave1節點及集群運行狀態

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容