搭建1个master,2个slave的集群方案。
软件
操作系统:ubuntu16.04 #同样适用centos系统
hadoop:hadoop-2.7.2.tar.gz
scala:scala-2.11.8.tgz
spark: spark-1.6.1-bin-hadoop2.6.tgz
java:jdk-8u91-linux-x64.tar.gz
创建hadoop用户
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop
sudo adduser hadoop sudo
su hadoop #是要切换用户的
更改hostname
vim /etc/hostname
master内容改为master
slave分别改为slave1、slave2
配置hosts
在每台主机上修改hosts文件
vim /etc/hosts
10.103.29.164 slave1
10.103.31.124 master
10.103.31.186 slave2
配置之后,ping一下看是否生效
master:
ping slave1
ping slave2
ssh免密码登陆
ubuntu只需要安装openssh-server
sudo apt-get install openssh-server
在所有主机上生成私钥和公钥
ssh-keygen -t rsa #一直回车
将每个slave上的id_rsa.pub发给master节点
scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.slave1
在master上,将所有的公钥加到用于认证的公钥文件authorized_keys中
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
将公钥文件authorized_keys分发给每台slave
scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
在每台机子上验证ssh无密码通信
ssh master
ssh slave1
ssh slave2
java安装
创建java安装目录
sudo mkdir /usr/lib/jvm/
将java安装文件解压到此目录
tar -zxvf dk-8u91-linux-x64.tar.gz
修改环境变量
sudo vim /etc/profile
添加下列内容,
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
然后使用环境生效,验证java是否安装成功
source /etc/profile
java -version
创建scala、hadoop、spark安装目录
sudo mkdir /usr/local/data
将scala、hadoop、spark的安装包mv到这个目录
sudo chown -R hadoop:hadoop /usr/local/data #更改文件所有者
很多问题就是,复制的文件的所有者并不是当前用户
安装scala
在安装目录中解压
tar -zxvf scala-2.11.8.tgz
再次修改环境变量,sudo vim /etc/profile。并添加以下内容
export SCALA_HOME=/usr/local/data/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
使配置生效,并验证scala是否安装成功
source /etc/profile
scala -version
安装hadoop yarn
同样将hadoop安装包解压到安装目录
tar -zxvf hadoop-2.7.2.tar.gz
配置hadoop
cd /usr/local/data/hadoop-2.7.2/etc/hadoop
1.配置hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
2.配置yarn-env.sh
# some Java parameters
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
3.配置slaves
slave1
slave2
4.配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/spark/workspace/hadoop-2.6.0/tmp</value>
</property>
</configuration>
5.修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/spark/workspace/hadoop-2.6.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/spark/workspace/hadoop-2.6.0/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
6.修改mapred-site.xml(cp mapred-site.xml.template mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7.修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
将配置好的hadoop-2.7.2分发给slaves,scp命令。
启动hadoop
在hadoop-2.7.2文件中
bin/hadoop namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
验证hadoop是否安装成功
用jps查看各个节点启动的进程是否正常。
$ jps #run on master
3407 SecondaryNameNode
3218 NameNode
3552 ResourceManager
3910 Jps
$ jps #run on slaves
2072 NodeManager
2213 Jps
1962 DataNode
或者在浏览器中输入 http://master:8088 ,应该有 hadoop 的管理界面出来了,并能看到 slave1 和 slave2 节点。
安装spark
同样将spark安装包解压到安装目录
tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz
配置spark
cd spark-1.6.1-bin-hadoop2.6/conf #进入spark配置目录
cp spark-env.sh.template spark-env.sh #从配置模板复制
vi spark-env.sh #添加配置内容
在spark-env.sh末尾添加以下内容
export SCALA_HOME=/usr/local/data/scala-2.11.8
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export HADOOP_HOME=/usr/local/data/hadoop-2.7.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/data/spark-1.6.1-bin-hadoop2.6
SPARK_DRIVER_MEMORY=1G
修改slaves文件,vim slaves
slave1
slave2
将配置好的spark-1.6.1-bin-hadoop2.6文件夹分发给所有的slaves
scp -r 命令
启动spark
sbin/start-all.sh
验证spark是否安装成功
用jps检查
$ jps #master
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
$jps #slaves
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
进入Spark的Web管理页面: http://master:8080
运行实例
master上执行命令
$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
lib/spark-examples*.jar \
10
参考链接
spark on yarn