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:PASSWORD@<proxyserver>:<proxyport>
export https_proxy=http://USERNAME:PASSWORD@<proxyserver>:<proxyport>
export ftp_proxy=http://USERNAME:PASSWORD@<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 root@Slave1:~/.ssh/
# scp ~/.ssh/authorized_keys root@Slave2:~/.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 hadoop@slave1:~/spark/    //這個命令都是在 master 上執行的,把 master 上配置好的 spark 安裝文件分發給每一個 slave,hadoop@slave1 代表 slave1 上的 hadoop 用戶。事實上,這種方法是通過網絡的方式傳輸文件。如果在實際部署中,所有機器都在一個地方,那麼用 U 盤拷貝可能速度會快一些。如果在 VMWare 上實現那就更容易了,從一臺機器複製粘貼到另一臺機器就行了,前提是安裝了 VMTools。

scp -r ~/spark/spark hadoop@slave1:~/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

 

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