参考资料:(我觉的参考资料比我的更重要,所以它在前面。)
http://www.mak-blog.com/spark-on-yarn-setup-multinode.html
张丹阳. 阿里云实现Spark的分布式计算
https://www.cnblogs.com/freeweb/p/5773619.html
三台EMC服务器,ubentu系统。下载一个putty,做远程连接。
第一步:修改/etc/hostname master slave1 slave2
修改/etc/hosts 格式:IP hostname
第二步:做ssh免密登陆。
# sudo apt-get install openssh-server
# sudo apt-get update
# ssh-keygen -t rsa -P "" //提示选择目录时,按 Enter 键,那么 id_rsa 和 id_rsa.pub 会生成到 root/.ssh 目录下。在根目录下使用 ls -a 命令可以看到该目录。
在三台服务器上执行:cd root/.ssh,cat id_rsa.pub>>authorized_keys,将 id_rsa.pub 追加到 authorized_keys。
将 slave1 和 slave2 的 id_rsa.pub 拷贝到 master(传输文件可用 scp),并将其内容追加到 master 的 root/.ssh/authorized_keys 中。同理,处理另外俩个机子。
可以通过阿里云的EMC控制台,执行上面的操作,很方便。也可以自己粘贴复制
id_rsa.pub到 authorized_keys
ssh master
ssh slave1
ssh slave2
验证成功,是不需要输入密码的。如果不成功,可能是.ssh文件夹和
authorized_keys的权限问题。
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
第三步:安装jdk和Scala
这里尽量避免使用apt-get install的命令安装。因为如果这样,JAVA_HOME和JRE_HOME,配置起来比较麻烦。
可以看我的这篇文档:http://blog.csdn.net/qq_36801710/article/details/79306319
wget url
安装jdk:
# cd /usr/local/
java
# sudo tar xzvf jdk-8u77-linux-x64. tar .gz
# sudo tar xzvf jdk-8u77-linux-x64. tar .gz
在/etc/profile 或者/~/bash.bashrc,配置jdk的环境变量。
export JAVA_HOME=/usr/local/java/jdk1.
8
.0_77
export JRE_HOME =/usr/local/java/jdk1. 8 .0_77/ jre
export CLASSPATH =.:$JAVA_HOME/lib:$JRE_HOME/ lib:$CLASSPATH
export PATH =$JAVA_HOME/bin:$JRE_HOME/ bin:$JAVA_HOME:$PATH
export JDK_HOME =/usr/local/java/jdk1. 8 .0_77
export JRE_HOME =/usr/local/java/jdk1. 8 .0_77/ jre
export CLASSPATH =.:$JAVA_HOME/lib:$JRE_HOME/ lib:$CLASSPATH
export PATH =$JAVA_HOME/bin:$JRE_HOME/ bin:$JAVA_HOME:$PATH
export JDK_HOME =/usr/local/java/jdk1. 8 .0_77
安装scala:
#
tar
xvzf scala-
2.11
.
8
.tgz
#
ln
-s scala-
2.11
.
8
scala
配置Scala的环境变量。
export SCALA_HOME=/usr/local/
scala
export PATH
=$PATH:$SCALA_HOME/bin
最后,修改了的配置文件,source filename ,保存一下。
第四步:安装spark
下载,解压。
在配置文件中配置:
export SPARK_HOME=/usr/local/
spark
export PATH =$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PATH =$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
对spark中的文件进行配置:
/usr/local/spark/conf/中:
#
mv
spark-
env
.template spark-
env
.
sh
# mv log4j.properties.template log4j.properties
# mv slaves.template slaves
# mv log4j.properties.template log4j.properties
# mv slaves.template slaves
打开spark-env.sh,这是spark的环境配置文件,里面加上Java和Scala的地址。
SCALA_HOME=/usr/local/scala
export JAVA_HOME=/usr/local/java
修改slaves:
slave1
slave2
slave2
可以修改日志的级别:
修改 spark/conf/log4j.properties,把 log4j.rootCategory=INFO,console 改为 log4j.rootCategory=WARN,console
然后发送Spark到集群其他节点
scp
-r spark/ slave1:/bigdata/
scp -r spark/ slave2:/bigdata/
启动spark集群:
start-all.sh
输入 # jps 命令看 master 下是否出现 master 和 worker,在 slave 节点下是否出现 worker,出现则说明 Spark 集群启动成功。
总结:Hadoop,spark的存储是用的是HDFS,需要Hadoop,集群的资源管理可以通过yarn管理,master的调控通过zookeeper。所以这次的分布式是不完整的。有时间,我把Hadoop的环境的搭建也记录一下。
参考文档:
http://blog.csdn.net/ttomchy/article/details/52305134