重要參考文獻:http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/
- 準備工作
- 作業系統:Ubuntu-14.04.1-desktop-amd64
- Hadoop 版本:hadoop-2.7.2:包含檔案管理系統 HDFS 和任務排程系統 YARN
- Spark 版本:spark-1.6.1-bin-without-hadoop
- 存放路徑說明:home 目錄下,比如 ~/spark,提到的所有軟體都不需要安裝,直接在官網上下載下傳安裝包并解壓就行了。
// 我們需要建立的是Spark叢集
// 我們需要3台虛拟機來建構
// 首先是配置ip
// 修改/etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart // 重新開機網絡
# ifconfig // 檢視ip是否設定正确,192.168.101.141/142/143
// 配置代理
# vi ~/.bashrc ##在檔案末尾添加
export http_proxy=http://USERNAME:[email protected]<proxyserver>:<proxyport>
export https_proxy=http://USERNAME:[email protected]<proxyserver>:<proxyport>
export ftp_proxy=http://USERNAME:[email protected]<proxyserver>:<proxyport>
# source .bashrc //使檔案修改立即生效
# curl -v www.baidu.com
// 分别修改hostname
# vi /etc/hostname
// 叢集狀态
// 在/etc/hosts檔案,向檔案中添加以下内容。
192.168.101.141 Master
192.168.101.142 Slave1
192.168.101.143 Slave2
# ssh-keygen -t rsa // 之後直接回車就行
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
# scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
# scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
// 首先3台虛拟機需要ssh互相連通,達到的目的是
# ssh Master
# ssh Slave1
# ssh Slave2
// 添加所有的環境變量
# vi /etc/profile
#JAVA
export JAVA_HOME=/home/spark/java-jdk/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
# SCALA
export SCALA_HOME="/home/spark/scala/scala-2.12.8"
export PATH="$PATH:$SCALA_HOME/bin"
# HADOOP
export HADOOP_HOME="/home/spark/hadoop/hadoop-3.1.1"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_NAMENODE_USER=root
# source /etc/profile // 激活
//最後一步:驗證
# ~/spark/hadoop/sbin/start-dfs.sh //啟動 hadoop 檔案管理系統 HDFS
# ~/spark/hadoop/sbin/start-yarn.sh //啟動 hadoop 任務管理器 YARN
# ~/spark/spark/sbin/start-all.sh //啟動 spark
- 搭建單機 Hadoop
為了友善搭建叢集,需要建立一個hadoop的使用者。
sudo useradd -m hadoop -s /bin/bash //添加 hadoop 使用者
sudo passwd hadoop //修改 hadoop 使用者密碼,一般也用 hadoop 就行了
sudo adduser hadoop sudo //為 hadoop 使用者增加管理者權限,防止之後産生權限問題
sudo apt-get update // 更新源
安裝Java JDK環境,并解壓到 ~/spark目錄,解壓後的 Java 檔案夾可以直接更名為 java。
sudo tar -zxvf download.gz //download 就是你下載下傳的 Java 安裝包名字,tar 是解壓指令
sudo mv ./download ./java //将原來的檔案夾名字修改為 java
sudo gedit /etc/profile //修改環境變量,需要修改的東西比較多。
安裝hadoop,下載下傳相應的編譯好的hadoop包,解壓到 ~/spark 檔案夾。
sudo tar -zxvf download.gz //download 就是你下載下傳的 hadoop 安裝包名字,tar 是解壓指令
sudo mv ./download ./hadoop //将原來的檔案夾名字修改為 Hadoop
注:(1)./etc/hadoop:這個檔案夾主要存放 hadoop 的配置檔案。hadoop 的運作模式都是通過改變這些配置檔案來實作的。Hadoop 配置檔案一般以 .xml 為字尾,每一條配置都是以聲明 property 的 name 和 value 來實作的。具體的配置方法需要參考 hadoop 官方手冊。(2)./bin:這個檔案夾主要存放一些可執行檔案。是 hadoop 功能實作的主要載體,可以看成是一個一個小的應用程式。(3)./sbin:這個檔案夾主要存放一些批處理檔案。主要用于實作一些相對複雜的任務,比如開啟和關閉 namenode 和 datanode 守護程式,開啟和關閉 yarn 等。
配置 Hadoop
sudo cd ~/spark/hadoop/etc/hadoop //進入 hadoop 配置檔案夾
(1)在hadoop-env.sh中配置JAVA_HOME
(2)在yarn-env.sh中配置JAVA_HOME
(3)在slaves中配置slave節點的ip或者host
(4)修改core-site.xml
(5)修改hdfs-site.xml
(6)修改mapred-site.xml
(7)修改yarn-site.xml
(8)格式化namenode
安裝Scala語言環境,spark 的主要程式設計語言,官網下載下傳最新 Scala 安裝包然後解壓。
sudo tar -zxvf download.tgz
sudo mv ./download ./scala //将原來的檔案夾名字修改為 scala
sudo gedit /etc/profile //修改環境變量,需要修改的東西比較多,可以參考[5]
安裝 spark,網上下載下傳相應的編譯好的 spark 包,解壓到 ~/spark 就行了。
sudo tar -zxvf download.gz
sudo mv ./download ./spark //将原來的檔案夾名字修改為 spark
配置 spark。
sudo cd ~/spark/spark/conf //進入 spark 配置檔案夾
配置 spark-env.sh 檔案。
在slaves中配置 slave 節點的ip或者 host。
叢集搭建
修改機器名。確定機器名是不一樣的。
sudo gedit /etc/hostname //對每一台電腦用 gedit 打開主機名檔案,修改成不同的機器名,一般叢集主機取名 master,從機取名 slave1,slave2 ... 修改完機器名必須重新開機!!!否則執行其他指令時會報錯。
設定 host 映射。克隆完虛拟機也需要對克隆後的每一台虛拟機進行這一步操作。
sudo gedit /etc/hosts //打開 hosts 檔案
Host 檔案本質上是一個 IP 位址與機器名對應關系的檔案,跟 windows 的 host 檔案差不多,其格式一般如下所示:( IP 位址 機器名)(檢視本機IP 位址:ifconfig)
192.168.86.128 master;192.168.86.132 slave1;192.168.86.133 slave1
(注:虛拟機需要設定橋接連接配接方式與NAT模式的差別)
建立ssh無密碼登陸環境。為了之後搭建的叢集互相通路時不需要反複輸密碼,我們需要配置ssh為無密碼登入。
sudo apt-get install openssh-server //安裝 SSH server
cd ~/.ssh/ //打開 .ssh 檔案
ssh-keygen -t rsa //生成秘鑰,一路回車
cat ./id_rsa.pub >> ./authorized_keys //将秘鑰加入授權
把 master 上配置好的 hadoop 和 spark 分發到各個 slave 節點。
scp -r ~/spark/hadoop [email protected]:~/spark/ //這個指令都是在 master 上執行的,把 master 上配置好的 spark 安裝檔案分發給每一個 slave,[email protected] 代表 slave1 上的 hadoop 使用者。事實上,這種方法是通過網絡的方式傳輸檔案。如果在實際部署中,所有機器都在一個地方,那麼用 U 盤拷貝可能速度會快一些。如果在 VMWare 上實作那就更容易了,從一台機器複制粘貼到另一台機器就行了,前提是安裝了 VMTools。
scp -r ~/spark/spark [email protected]:~/spark/ //功能同上。
驗證安裝是否成功
~/spark/hadoop/sbin/start-dfs.sh //啟動 hadoop 檔案管理系統 HDFS
~/spark/hadoop/sbin/start-yarn.sh //啟動 hadoop 任務管理器 YARN
~/spark/spark/sbin/start-all.sh //啟動 spark
以上指令都是在 master 上執行的,在每一台機器上通過下面指令檢視啟動的程序
jps //檢視程序
如果叢集安裝成功,在 master 上将會有下面幾個程序:
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
在 slave 上将會有下面幾個程序:
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
注意,如果叢集設定成功,master 能直接啟動 slave 上的程序,不需要在 slave 上進行任何操作了
啟動叢集
Sparkshell 是 spark 自帶的編譯環境。如果叢集安裝成功,以後每次想要啟動 spark 編譯環境 sparkshell 時,隻需要依次輸入以下指令。
~/spark/hadoop/sbin/start-dfs.sh //啟動 hadoop 檔案管理系統 HDFS
~/spark/hadoop/sbin/start-yarn.sh //啟動 hadoop 任務管理器 YARN
~/spark/spark/sbin/start-all.sh //啟動 spark
~/spark/spark/bin/spark-shell //啟動 sparkshell
啟動完會有類似于下列的界面出現,接下來就可以進行 scala 程式設計了。關于 scala 程式設計方法将會在後續的部落格中進行介紹。
相關連結:
相當有用yum配置:https://blog.51cto.com/qiuyue/2055313
修改時間:https://jingyan.baidu.com/article/fa4125acb7328628ac70920e.html