首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hadoop 1.2 偽分散式環境搭建完整教學(Linux Mint / Ubuntu)

     編輯:Java 相關知識

環境說明

  • OS:Linux Mint 15 64-bit(Ubuntu 衍生版,指令通用)
  • Hadoop:1.2.1
  • JDK:1.7.0_25(已安裝並設定 JAVA_HOME)
  • 模式:偽分散式——單機模擬 NameNode、DataNode、JobTracker、TaskTracker、SecondaryNameNode 全部進程。

步驟 1:配置 SSH 無密碼登入

Hadoop 節點間通訊依賴 SSH,偽分散式需 localhost 無密碼登入。

# 安裝 SSH 服務端
sudo apt-get update && sudo apt-get install -y openssh-client openssh-server

# 啟動/停止服務
sudo service ssh start
# sudo service ssh stop

# 驗證 sshd 進程
ps -e | grep ssh
# 應看到 ssh-agent 與 sshd

# 產生無密碼金鑰對
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 將公鑰加入授權
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

# 測試
ssh localhost
# 首次會詢問 yes/no,之後應直接進入無需密碼

步驟 2:解壓 Hadoop 並建立資料目錄

# 解壓至家目錄
tar -xzf hadoop-1.2.1.tar.gz -C ~/

# 建立資料目錄結構
mkdir -p ~/hadoop-env/dfs/{checkpoint1,data1,data2,name1}
mkdir -p ~/hadoop-env/test/input

步驟 3:修改核心配置檔($HADOOP_HOME/conf/)

core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
    <final>true</final>
  </property>
</configuration>

fs.default.name 指定 HDFS URI,未指定埠預設 8020,這裡明確用 9000。

hdfs-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>dfs.name.dir</name>
    <value>~/hadoop-env/dfs/name1</value>
    <final>true</final>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>~/hadoop-env/dfs/data1,~/hadoop-env/dfs/data2</value>
    <final>true</final>
  </property>
  <property>
    <name>fs.checkpoint.dir</name>
    <value>~/hadoop-env/dfs/checkpoint1</value>
    <final>true</final>
  </property>
</configuration>
  • dfs.name.dir:NameNode 儲存元資料目錄(可多目錄,逗號分隔)。
  • dfs.data.dir:DataNode 儲存資料塊目錄(多目錄提升 I/O 平行度)。
  • fs.checkpoint.dir:SecondaryNameNode 檢查點目錄。

mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
    <final>true</final>
  </property>
</configuration>

步驟 4:設定 hadoop-env.sh 指定 JAVA_HOME

# 編輯 ~/hadoop-1.2.1/conf/hadoop-env.sh
export JAVA_HOME=~/jdk1.7.0_25
# 或絕對路徑 /usr/lib/jvm/java-7-oracle

步驟 5:格式化 HDFS 並啟動叢集

# 格式化 NameNode(僅首次)
~/hadoop-1.2.1/bin/hadoop namenode -format

# 啟動 HDFS(NameNode + DataNode + SecondaryNameNode)
~/hadoop-1.2.1/bin/start-dfs.sh

# 啟動 MapReduce(JobTracker + TaskTracker)
~/hadoop-1.2.1/bin/start-mapred.sh

步驟 6:驗證服務啟動

方法一:jps 檢查進程

$ jps
12864 NameNode
13592 DataNode
13728 SecondaryNameNode
13837 JobTracker
13955 TaskTracker
16069 Jps

方法二:Web UI

  • JobTracker:https://localhost:50030
  • NameNode:https://localhost:50070

若使用代理/VPN 可能無法存取,關閉代理後重試。

步驟 7:執行 WordCount 測試

# 建立測試資料
echo "hello world" > ~/hadoop-env/test/input/test1.txt
echo "hi world"   > ~/hadoop-env/test/input/test2.txt

# 上傳至 HDFS
~/hadoop-1.2.1/bin/hadoop dfs -put ~/hadoop-env/test/input/ output/

# 檢查
~/hadoop-1.2.1/bin/hadoop dfs -ls /
~/hadoop-1.2.1/bin/hadoop dfs -ls /test

# 執行範例 WordCount
~/hadoop-1.2.1/bin/hadoop jar ~/hadoop-1.2.1/hadoop-examples-1.2.1.jar wordcount /test /test-out

# 查看結果
~/hadoop-1.2.1/bin/hadoop dfs -cat /test-out/part-r-00000

常見問題排查

現象原因與解決
JAVA_HOME is not set未在 hadoop-env.sh 設定 export JAVA_HOME
SSH 仍需密碼檢查 ~/.ssh 權限(700)、authorized_keys(600)、sshd_config 允許 PubkeyAuthentication
DataNode 啟動失敗檢查 dfs.data.dir 目錄權限、磁碟空間、防火牆
Web UI 打不開關閉代理/VPN;檢查 netstat -ntlp | grep 500 確認埠監聽
版本不符Hadoop 1.x 與 2.x/3.x 配置差異大,本教學僅適用 1.2.x

重要提醒

Hadoop 1.x 已停止維護,生產環境請使用 Hadoop 3.x(YARN、HA、擴展性大幅提升)。本文僅供學習經典架構參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved