mac 環境下 hadoop與spark環境搭建

環境搭建

想必之前搭建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,這時候會看到

妥了!雖然整個安裝過程沒有遇到什麼大坑,但是還是比較耗時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章