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

 

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