Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

HADOOP 應用

 事情安裝準備
下載 VirtualBox 6.1.16
https://www.virtualbox.org/wiki/Downloads

下載 Ubuntu 20.04 LTS


https://www.ubuntu-tw.org/modules/tinyd0/

下載完後進行 VirtualBox 安裝及 Ubuntu 的安裝。


進入系統 Ubuntu 後,先下載以下軟體:

下載 JAVA 8 jdk-8u271-linux-x64.tar.gz
使用版本 8 太新的版本可能會有問題。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

下載 HADOOP 2.7.1.tar.gz
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.1/
下載 scala-2.11.8.tgz
https://www.scala-lang.org/download/2.11.8.html

下載 spark-2.3.3-bin-hadoop2.7.tgz
https://archive.apache.org/dist/spark/spark-2.3.3/
 安裝 JAVA
在安裝 Oracle Java 前,先將系統中的 OpenJava 清除,
開啟 Terminal 輸入指令。

sudo apt-get purge openjdk-\*

輸入指令進入/home/test/Downloads 資料夾底下。

cd /home/test/Downloads
然後再把下載好的 Java 檔案進行解壓縮複製到/usr/local。

sudo tar -xvf jdk-8u271-linux-x64.tar.gz -C /usr/local

然後進行安裝 Vim 編輯器。

sudo apt-get install vim

修改 Java 全域環境變數

sudo vim /etc/profile

把路徑等資料修改進去,進去 vim 編輯器後,指標移到最後按 ’a’ 進入編輯,編輯


完成後按 ’ESC’ 跳出編輯,再輸入’:wq’完成寫入離開。

JAVA_HOME=/usr/local/jdk1.8.0_271

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export JAVA_HOME

export PATH
設定 JDK/JRE 的位置給 Ubuntu。

sudo update-alternatives --install "/usr/bin/java" "java"

"/usr/local/jdk1.8.0_271/bin/java" 1

sudo update-alternatives --install "/usr/bin/javac" "javac"

"/usr/local/jdk1.8.0_271/bin/javac" 1

sudo update-alternatives --install "/usr/bin/javaws" "javaws"

"/usr/local/jdk1.8.0_271/bin/javaws" 1
設定 JDK1.8.0_271 為系統默認。

sudo update-alternatives --set java /usr/local/jdk1.8.0_271/bin/java

sudo update-alternatives --set javac /usr/local/jdk1.8.0_271/bin/javac

sudo update-alternatives --set javaws /usr/local/jdk1.8.0_271/bin/javaws

輸入指令來查詢 Java 是否設定完成

java -version

 安裝 SSH
安裝 SSH,為了管理節點,Hadoop 需要 SSH 來做連線,
我們先下指令清除 SSH

sudo apt-get purge openssh-server


我們先更新軟體的最新資訊及列表

sudo apt-get update

安裝 SSH,中間會問你使用多少空間是否具續按 ‘Y’ 即可。

sudo apt-get install openssh-server

建立一個新的金鑰,中間會問你要存的地方,按 ’Enter’ 就好。

ssh-keygen -t rsa -P ""


測試 SSH 連線,中間會問你是否繼續,輸入 ‘Enter’即可。

ssh localhost

測試完記得先結束 SSH 連線

exit

 安裝 HADOOP
進到 /home/test/Downloads 資料夾去解壓縮下載好的 HADOOP 檔案,並移動到
/usr/local 且改資料夾名稱為 Hadoop,修改擁有者為 test。
cd /home/test/Downloads

sudo tar xzf hadoop-2.7.1.tar.gz

sudo mv hadoop-2.7.1 /usr/local/Hadoop

cd /usr/local

sudo chown -R test hadoop

在~/.bashrc 文末增加下列文字,修改變數。

sudo vim ~/.bashrc

#Set HADOOP_HOME

export HADOOP_HOME=/usr/local/hadoop

#Set JAVA_HOME

export JAVA_HOME=/usr/local/jdk1.8.0_271

# Add bin/ directory of Hadoop to PATH

export PATH=$PATH:$HADOOP_HOME/bin

然後在下命令執行配置

. ~/.bashrc
設置 JAVA_HOME 的配置,
把文件中原本路徑 ‘export JAVA_HOME=${JAVA_HOME}’ ,
修改為’ export JAVA_HOME=/usr/local/jdk1.8.0_271’ 。

sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

接著要修改 $HADOOP_HOME/etc/hadoop/core-site.xml 中的參數設定


1. ‘hadoop.tmp.dir’ 用於指定目錄讓 Hadoop 來存儲文件。
2. ‘fs.default.name’ 指定默認的文件係統
sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml

把下面內容寫入標簽 <configuration></configuration> 中間。

<property>

<name>hadoop.tmp.dir</name>

<value>/app/hadoop/tmp</value>

<description>Parent directory for other temporary


directories.</description>

</property>

<property>

<name>fs.defaultFS </name>

<value>hdfs://localhost:54310</value>

<description>The name of the default file system.


</description>

</property>

然後到 cd /usr/local/hadoop/etc/Hadoop 目錄下,建立/app/hadoop/tmp 資料夾。

sudo mkdir -p /app/hadoop/tmp

修改資料夾權限及授權給 test。

sudo chown -R test /app/hadoop/tmp

sudo chmod 777 /app/hadoop/tmp

做 Map Reduce 的設定

sudo vim /etc/profile.d/hadoop.sh


加入下列資料

sudo vim /etc/profile.d/hadoop.sh

然後再修改其可執行權限。

sudo chmod +x /etc/profile.d/hadoop.sh

重新啟動 Terminal,驗證一下 HADOOP 路徑。

echo $HADOOP_HOME

然後複製文件

sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template
$HADOOP_HOME/etc/hadoop/mapred-site.xml

修改 mapred-site.xml 的參數

sudo vim $HADOOP_HOME/etc/hadoop/mapred-site.xml


把下面內容寫入標簽 <configuration></configuration> 中間。

<property>

<name>mapreduce.jobtracker.address</name>

<value>localhost:54311</value>

<description>MapReduce job tracker runs at this host and


port.

</description>

</property>

修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml 參數

sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

把下面內容寫入標簽 <configuration></configuration> 中間。

<property>

<name>dfs.replication</name>

<value>1</value>

<description>Default block replication.</description>

</property>

<property>
<name>dfs.datanode.data.dir</name>

<value>/home/test/hdfs</value>

</property>

建立以上配置指定的目錄並授權目錄給用戶,輸入以下命令:

sudo mkdir -p /home/test/hdfs

sudo chown -R test /home/test/hdfs

sudo chmod 777 /home/test/hdfs

接著格式化 HDFS

$HADOOP_HOME/bin/hdfs namenode -format

開啟 SSH

ssh localhost

啟動 HADOOP 單節點服務

$HADOOP_HOME/sbin/start-dfs.sh \

&& $HADOOP_HOME/sbin/start-yarn.sh
中間會問你要不要用金鑰連線,請打 ‘YES’。

輸入 JPS 來驗證 HADOOP 啟動服務,檢查是否六項都有啟動。

/usr/local/jdk1.8.0_271/bin/jps

如果中間有少了 namenode 或者 datanode 服務,先檢查是否有用 SSH 連線,如


果沒有先停止服務,重新啟動 SSH 和 start-dfs.sh 及 start-yarn.sh,在沒有就做除
資料夾的動作,一樣先停止 SSH 及服務。

$HADOOP_HOME/sbin/stop-yarn.sh \

&& $HADOOP_HOME/sbin/stop-dfs.sh

在做清除動作。

rm -rf /app/hadoop/tmp/* \

&& mkdir -p /app/hadoop/tmp/dfs/name \

&& mkdir -p /app/hadoop/tmp/dfs/data


並且重新格式化。

$HADOOP_HOME/bin/hadoop namenode -format \

&& $HADOOP_HOME/bin/hdfs namenode -format

然後再重頭啟動即可。

啟動後就可以看到以下頁面資訊
 安裝 Scala
再啟動 Spark 跟 Scala 必須啟動上述的 Hadoop。
將下載好的 scala 解壓縮。

cd /home/test/Downloads

sudo tar zxvf scala-2.11.8.tgz -C /home/test/

然後修改資料夾名稱為 scala

然後做環境變數設定。

sudo vim /etc/profile

在文末的地方加入下列資訊。

SCALA_HOME=/home/test/scala

export SCALA_HOME

: $SCALA_HOME/bin

然後做文件配置動作,並測試。

source /etc/profile

scala -version
 安裝 Spark
將下載好的檔案解壓縮到指定資料夾。

sudo tar zxvf /home/test/Downloads/spark-2.3.3-bin-hadoop2.7.tgz


-C /home/test/

並將資料夾重新命名為 spark。

設置 spark 環境。

sudo vim /etc/profile

在文末的地方加入下列資訊。

SPARK_HOME=/home/test/spark

export SPARK_HOME

:$SPARK_HOME/bin

然後做文件配置動作。

source /etc/profile

進入到 spark/conf/,然後做檔案複製及參數修改。
cd spark/conf/

sudo cp spark-env.sh.template spark-env.sh

sudo vim spark-env.sh

在文末加入以下:

export JAVA_HOME=/usr/local/jdk1.8.0_271

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

export SCALA_HOME=/home/test/scala

export SPARK_HOME=/home/test/spark

export SPARK_MASTER_IP=127.0.0.1

export SPARK_MASTER_PORT=7077

export SPARK_MASTER_WEBUI_PORT=8099

export SPARK_WORKER_CORES=3

export SPARK_WORKER_INSTANCES=1

export SPARK_WORKER_MEMORY=5G

export SPARK_WORKER_WEBUI_PORT=8081

export SPARK_EXECUTOR_CORES=1

export SPARK_EXECUTOR_MEMORY=1G

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/native
配置 Slave

sudo cp slaves.template slaves

vim slaves

位置默認設定為 localhost。

啟動 spark 先確定一下,hadoop 的偽分佈式是否啟動正常。


進入 spark/sbin/目錄底下啟動。

cd spark/sbin/

啓動 start-master.sh 以及 start-slaves.sh

sudo ./start-master.sh

sudo ./start-slaves.sh
這裡再啟動 sudo ./start-slaves.sh 出現了錯誤。

先將服務停止

sudo ./stop-master.sh

sudo ./stop-slaves.sh

先將 root 密碼修改

然後修改/etc/ssh/sshd_config 設定

sudo vim /etc/ssh/sshd_config

在文件中找到 PermitRootLogin prohibit-password


在下面新增一條

PermitRootLogin yes
重新啟動 SSH

sudo service ssh restart

並且重新啟動

sudo ./start-master.sh

sudo ./start-slaves.sh

就可以檢查 Spark 的網頁介面是否成功啟動。


http://127.0.0.1:8099/
然後再來啓動 bin 目錄下的 spark-shell。

Cd ..

Cd bin

在 bin 目錄下輸入指令:

./spark-shell

會進入 scala 環境就代表成功了。


順便查看 spark-shell 的 Web 介面 http://127.0.0.1:4040/

有以上畫面代表安裝成功。

You might also like