spark1.2.0+hadoop2.4.0集群环境搭建
1.首先介绍一下整个过程中需要用到的一些软件
Jdk jdk-7u21-linux-i586.tar.gz
spark-1.2.0-bin-hadoop2.4 这是编译好了的spark,当然你也可以自己编译,详情将官网http://spark.apache.org/docs/latest/building-spark.html
hadoop-2.4.0
scala-2.10.4
2.集群环境
我这里一共有5台机器,一个本机做客户端,4台虚拟机,一台做master,3台做worker
10.18.200.235 master
10.18.200.231 node1
10.18.200.232 node2
10.18.200.233 node3
172.18.56.142 Ubuntu-Kylin (我的本机,做client)
3.开始安装
3.1 进入master节点,在master节点下新建/opt/sparkhome文件夹
mkdir /opt/sparkhome 之后将软件安装在这个目录下
3.2 安装jdk
cd 进入jdk所在的目录
tar -zvxf jdk-7u21-linux-i586.tar.gz -C /opt/sparkhome 解压到刚才建立的目录下
3.3 安装scala
cd 进入scala安装包所在目录
tar -zvxf scala-2.10.4.tgz -C /opt/sparkhome
3.4 安装hadoop
cd 进入hadoop安装包所在目录
tar -zvxf hadoop-2.4.0.tar.gz -C /opt/sparkhome
3.5 安装spark
cd 进入spark安装包所在目录
tar -zvxf spark-1.2.0-bin-hadoop2.4.tgz -C /opt/sparkhome
4.配置环境变量
vi /etc/profile
写入如下配置
export JAVA_HOME=/opt/sparkhome/jdk1.7.0_21
export JRE_HOME=/opt/sparkhome/jdk1.7.0_21/jre
export SCALA_HOME=/opt/sparkhome/scala-2.10.4export SPARK_HOME=/opt/sparkhome/spark-1.2.0-bin-hadoop2.4
export HADOOP_COMMON_HOME=/opt/sparkhome/hadoop-2.4.0
export HADOOP_CONF_DIR=$HADOOP_COMMON_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_COMMON_HOME/etc/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_COMMON_HOME}/bin:${HADOOP_COMMON_HOME}/sbin:${SPARK_HOME}/bin:$PATH保存退出
source /etc/profile
测试java是否安装正确 java -version
测试scala是否安装正确 scala -version
5.配置hadoop
cd $HADOOP_CONF_DIR 进入hadoop配置文件目录,进行修改
vi slaves 进入slaves文件修改
去掉localhost 加入如下配置
node1
node2
node3
保存退出
vi core-site.xml 进入修改如下
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>NameNode URI</description>
</property><property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/sparkhome/hadoop-2.4.0/tmp</value>
</property>
</configuration>保存退出
vi hdfs-site.xml 进入修改如下
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/sparkhome/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/sparkhome/hdfs/datanode</value>
</property><property>
<name>dfs.replication</name>
<value>1</value></property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
保存退出
vi mapre-site.xml 进入修改如下
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property></configuration>
保存退出
vi yarn-site.xml 进入修改如下
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
保存退出
vi hadoop-env.sh 进入加入如下语句
export JAVA_HOME=/opt/sparkhome/jdk1.7.0_21
保存退出
vi yarn-env.sh 进入加入如下语句
export JAVA_HOME=/opt/sparkhome/jdk1.7.0_21
保存退出
6.配置spark
cd $SPARK_HOME/conf 进入SPARK配置文件目录,进行修改
vi slaves 进入修改如下
去掉localhost,加入如下配置
node1
node2
node3
保存退出
cp spark-env.sh.template spark-env.sh 创建spark-env.sh文件
vi spark-env.sh 进入加入如下配置
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2 解释:如果你cpu核比较多可以设置得更多
export SPARK_WORKER_MEMORY=2g 解释:如果你内存比较大可以设置得更大
export JAVA_HOME=/opt/sparkhome/jdk1.7.0_21
export SCALA_HOME=/home/sprakhome/scala-2.10.4
保存退出
7.SSH无密码登录(如果没有安装ssh,执行sudo apt-get install ssh安装即可)
1.在每个节点上做如下操作,包括client节点,也就是你的本机
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2.回到master节点,进行公钥合并
cd ~/.ssh
ls -lsa
语法:ssh 机器名 cat ~/.ssh/id_dsa.pub>>authorized_keys 合成公钥
ssh master cat ~/.ssh/id_dsa.pub>>authorized_keys
ssh node1 cat ~/.ssh/id_dsa.pub>>authorized_keys
ssh node2 cat ~/.ssh/id_dsa.pub>>authorized_keys
ssh node3 cat ~/.ssh/id_dsa.pub>>authorized_keys
ssh Ubuntu-Kylin cat ~/.ssh/id_dsa.pub>>authorized_keys
当然在执行上面的操作之前你要保证每个节点的hosts文件中有如下配置
172.18.56.142 Ubuntu-Kylin
10.18.200.235 master
10.18.200.231 node1
10.18.200.232 node2
10.18.200.233 node33.修改authorized_keys文件属性为600 ,并发放给各节点
chmod 600 authorized_keys 修改属性
分发到其他节点以及client
scp authorized_keys root@node1:~/.ssh/
scp authorized_keys root@node2:~/.ssh/
scp authorized_keys root@node3~/.ssh/
scp authorized_keys root@Ubuntu-Kylin:~/.ssh/
4.在三个节点上以及client进行测试无密码登录
ssh node1
ssh node2
ssh node3ssh Ubuntu-Kylin
8.将master节点的配置拷贝到各个worker节点
cd /opt
scp -r sparkhome root@node1:/opt
scp -r sparkhome root@node2:/opt
scp -r sparkhome root@node3:/opt
scp -r sparkhome root@Ubuntu-Kylin:/opt
将profile文件也拷贝到各个节点
scp /etc/profile root@node1:/etc/
scp /etc/profile root@node2:/etc/
scp /etc/profile root@node3:/etc/
scp /etc/profile root@Ubuntu-Kylin:/etc/
9.启动spark集群
cd $SPARK_HOME/sbin
./start-all.sh
查看进程是否启动,jps
测试webui
master:8080
运行测试程序
run-example SparkPi
10.客户端连接集群
bin/spark-shell --master spark://master:7077
客户端提交作业命令spark-submit,用法参见官网 http://spark.apache.org/docs/latest/submitting-applications.html