天天看點

Hadoop+Spark叢集配置

重要參考文獻:http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/

  • 準備工作
  1. 作業系統:Ubuntu-14.04.1-desktop-amd64
  2. Hadoop 版本:hadoop-2.7.2:包含檔案管理系統 HDFS 和任務排程系統 YARN
  3. Spark 版本:spark-1.6.1-bin-without-hadoop
  4. 存放路徑說明: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

繼續閱讀