環境搭建
想必之前搭建Hadoop環境的Windows系統的相對繁瑣步驟,Mac下顯得簡單不少。
雖然我們需要搭建的是Spark環境,但是因爲Spark依賴了Hadoop的HDFS以及YARN計算框架,當然還有類似軟件包管理軟件。
安裝前必備
操作系統:Mac OS X
JDK:1.8.0_192
命令終端:iTerm2
(Mac自帶的命令終端也一樣)
軟件包管理工具:brew
安裝Hadoop
上面步驟和條件如果都具備的話,就可以安裝Hadoop了,這也是我唯一遇到坑的地方。
1. 配置ssh
1.在終端執行ssh-keygen -t rsa
,之後一路enter
鍵,當然如果你之前已經執行過這樣的語句,那過程中會提示是否要覆蓋原有的key,輸入y
即可。
2.執行語句cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用於授權你的公鑰到本地可以無需密碼實現登錄。
3.在終端輸入ssh lcoalhost
就能夠免密登錄了
啓動sshd服務
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
2. 下載安裝Hadoop
這時候brew的好處就體現出來了,你無需到Hadoop官網去找下載鏈接,只要在命令終端輸入brew install hadoop
等命令執行完,你就可以看到在/usr/lcoal/Cellar
目錄下就有了hadoop目錄,表示安裝成功。(當然命令執行過程中會因爲網絡或其他原因中斷,這時候你只需要重新執行一次brew install hadoop
即可)
3. 配置Hadoop
3.1 進入安裝目錄/usr/local/Cellar/hadoop/3.1.2/libexec/etc/hadoop
,找到並打開hadoop-env.sh文件,將export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
改爲
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
(java_home請寫上你本機上jdk安裝的位置)
3.2 配置hdfs地址和端口
進入目錄/usr/local/Cellar/hadoop/3.1.2/libexec/etc/hadoop
,打開core-site.xml
將<configuration></configuration>
替換爲
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
</property>
</configuration>
3.3 配置mapreduce中jobtracker的地址和端口
在相同的目錄下,你可以看到一個mapred-site.xml.template
首先將文件重命名爲mapred-site.xml
,同樣將<configuration></configuration>
替換爲
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
3.4 修改hdfs備份數
相同目錄下,打開hdfs-site.xml
加上
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4. 格式化HDFS
這個操作相當於一個文件系統的初始化,執行命令hdfs namenode -format
在終端最終會顯示成功
2019-08-24 23:41:34,411 INFO common.Storage: Storage directory /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name has been successfully formatted.
2019-08-24 23:41:34,428 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2019-08-24 23:41:34,557 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 395 bytes saved in 0 seconds .
2019-08-24 23:41:34,567 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2019-08-24 23:41:34,572 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at xidodangdeMacBook-Pro.local/192.168.*.*
************************************************************/
5. 配置Hadoop環境變量
因爲我用的是iTerm2,所以打開~/.bashrc
添加
export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.2
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/libexec/etc/hadoop
再執行source ~/.bashrc
以確保配置生效
配置這個是方便在任意目錄下全局開啓關閉hadoop相關服務,而不需要到/usr/local/Cellar/hadoop/3.1.2/sbin
下執行。
6. 啓動關閉Hadoop服務
啓動/關閉HDSF服務
進入/usr/local/Cellar/hadoop/3.1.2/sbin目錄下
./start-dfs.sh
./stop-dfs.sh
問題:
啓動時發現mac上使用brew安裝的hadoop沒有native包,報錯 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。
解決方法:
必須自己用源碼手動安裝,安裝步驟如下
1).首先在官網找到對應的hadoop版本的源碼 https://hadoop.apache.org/releases.html 或者在鏡像網站下載源碼 http://mirror.bit.edu.cn/apache/hadoop/common/ 我下載的是 hadoop-3.1.2-src.tar.gz
2).安裝環境 參照源碼下BUILD.TXT文件
* JDK 1.8
* Maven 3.3 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer (if compiling native code)
其中ProtocolBuffer 必須是2.5.0版本,所以只能手動安裝
(1)下載protocbuf2.5.0,下載地址:https://download.csdn.net/download/canlets/6878023
(2)解壓文件,在該文件的根目錄下執行以下幾步操作:
./configure --prefix=/usr/local/Cellar/protobuf
(3)安裝:
make
make install
(4)配置環境變量(~/.bash_profile),增加以下東東:
export PROTOBUF=/usr/local//Cellar/protobuf
export PATH=$PROTOBUF/bin:$PATH
(5)查看安裝是否正確
$ protoc --version
libprotoc 2.5.0
3). 進入下載的hadoop3.0.* 源碼目錄下,執行:
mvn package -Pdist,native -DskipTests -Dtar
具體參考:
https://blog.csdn.net/qq_14811559/article/details/80308434
https://blog.csdn.net/tterminator/article/details/51779689
啓動成功後,我們在瀏覽器中輸入http://localhost:50070
可以看到
啓動/關閉YARN服務
./start-yarn.sh
./stop-yarn.sh
啓動成功後,我們在瀏覽器中輸入http://localhost:8088
可以看到
啓動/關閉Hadoop服務(等效上面兩個)
./start-all.sh
./stop-all.sh
安裝Scala
同樣的配方,執行brew install scala
你就可以擁有Scala。
在終端執行scala -version
,如果出現類似Scala code runner version 2.12.2 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
說明你安裝成功了。
同樣,不要忘了配置Scala的環境變量,打開~/.zshrc
添加
export SCALA_HOME=/usr/local/Cellar/scala/2.12.2
export PATH=$PATH:$SCALA_HOME/bin
安裝Spark
有了前面這麼多的準備工作,終於可以安裝Spark了。也是比較簡單,起碼我沒有遇到坑。
到Spark官網下載你需要的Spark版本,注意這裏我們看到需要有依賴的Hadoop,而且還讓你選擇Hadoop的版本。
下載完直接雙擊壓縮包就會解壓(建議安裝一個解壓軟件),將其重命名爲spark放到/usr/local
下面。
毫無例外,我們還需要一個環境參數配置,打開~/.zshrc
添加
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
走到這一步,我們終於可以啓動spark了,打開終端,輸入spark-shell
,這時候會看到
妥了!雖然整個安裝過程沒有遇到什麼大坑,但是還是比較耗時間。