教學目標

主要解決在 CentOS Linux 單一機器上安裝 Apache Hadoop 的問題。

重點概念

首先 Apache Hadoop 專案主要是開發可靠、延展性和分散式運算,它主要是軟體函式庫的框架允許使用單一程式模型跨叢集伺服器的大數據分散式處理。

接著 Hadoop 專案主要有下述幾個模組,分別為:

  1. Hadoop Common:共通工具主要支援其它 Hadoop 模組
  2. Hadoop Distributed File System (HDFS):分散式檔案系統主要提供應用程式資料高輸出量存取。
  3. Hadoop YARN:工作排程框架主要針對叢集資料進行管理。
  4. Hadoop MapReduce:以 YARN 為基礎的系統針對大數據的平行處理。

再來若我們要開始在單一機器上安裝 Hadoop 主要有五個階段,分別為:

  1. 前置階段
  2. 安裝階段
  3. 設定階段
  4. 啟動階段
  5. 驗證階段

前置階段

確認 Java 版本

1
2
3
4
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

建立 Hadoop 使用者和群組

1
2
$ adduser hadoop
$ passwd hadoop

設定 SSH 無密碼登入

1
2
3
4
5
6
$ su - hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ ssh localhost
$ exit

安裝階段

下載 Hadoop 2.8.2 安裝檔並且解壓縮

1
2
3
$ wget http://apache.stu.edu.tw/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz 
$ tar -zxvf hadoop-2.8.2.tar.gz
$ mv hadoop-2.8.2 hadoop

設定階段

設定相關目錄的環境變數

1
2
3
4
5
6
7
8
9
10
11
$ vi ~/.bashrc
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0
$ source ~/.bashrc

設定 core-site.xml 設定檔

1
2
3
4
5
6
7
8
$ cd $HADOOP_HOME/etc/hadoop
$ vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:\/\/localhost:9000</value>
</property>
</configuration>

設定 hdfs-site.xml 設定檔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>

格式化 NameNode

1
$ hdfs namenode -format

設定 mapred-site.xml 設定檔

1
2
3
4
5
6
7
$ vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

設定 yarn-site.xml 設定檔

1
2
3
4
5
6
7
$ vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

啟動階段

啟動 NameNode 和 DataNode

1
2
$ cd /sbin
$ start-dfs.sh

啟動 ResourceManager 和 NodeManager

1
$ start-yarn.sh

驗證階段

取得 Hadoop NameNode 詳細資訊

1
http:\/\/localhost:50070

取得 Hadoop DataNode 詳細資訊

1
http:\/\/localhost:50075

取得叢集和所有應用程式資訊

1
http:\/\/localhost:8088

在 HDFS 上建立資料夾

1
2
$ cd /bin
$ hdfs dfs -mkdir /test

總結我們可以透過上述五個階段,分別為前置階段、安裝階段、設定階段、啟動階段和驗證階段,就能夠解決在 CentOS Linux 單一機器上安裝 Apache Hadoop 的問題。

相關資源