参考链接1:https://www.cnblogs.com/purstar/p/6293605.html
参考链接2:http://blog.csdn.net/xiaoxiangzi222/article/details/52757168
一、spark集群搭建
这里介绍spark的集群安装,需要依赖于hadoop的集群
所以,首先搭建了一个hadoop集群,1个master,2个slaves
1、各软件版本及环境变量配置(我把环境变量配置到了用户 ~/.bashrc):
ububtu 16.04 LTS
SSH
hadoop-2.7.4
scala-2.12.4
spark-2.2.1-bin-hadoop2.7
jdk1.8
virtualbox5.1.6
2、安装jdk、scala、ssh、并配置环境变量
export JAVA_HOME=/home/elfasd/soft/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export SCALA_HOME=/home/elfasd/soft/scala-2.12.4
export PATH=$PATH:${SCALA_HOME}/bin
export SPARK_HOME=/home/hadoop/spark
export PATH=$PATH:$SPARK_HOME/bin
export HADOOP_HOME=/home/hadoop/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
3、新建用户及用户组
新建用户组:sudo addgroup hadoop
新建用户:sudo adduser -ingroup hadoop hadoop
给新建的用户hadoop增加root权限
vim /etc/sudoers
在root ALL=(ALL:ALL) ALL下面添加:hadoop ALL=(ALL:ALL) ALL
注:以后的所有操作都在hadoop这个用户下
4、在virtualbox中将这个虚拟机复制2份
拟定的分配如下:
192.168.56.2 master
192.168.56.21 node1
192.168.56.22 node2
网络选择hostonly模式
复制后,分别设置ip、hostname、hosts
三台机器,分别修改hostname: vim /etc/hostname ,分别命名为:master/node1/node2
三台机器,分别修改hosts: vim /etc/hosts,新增内容如下:
192.168.56.2 master
192.168.56.21 node1
192.168.56.22 node2
重启后,ping + 主机名(master/node1/node2),检查网络是否通畅
5、配置SSH,实现免密码登录
在master节点执行:ssh-keygen -t rsa
输入后一直回车即可,会将秘钥生成在 ~/.ssh文件夹下
然后执行下面的命令将秘钥导入
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将秘远程传输给node1、node2
scp authorized_keys hadoop@node1:~/.ssh/
scp authorized_keys hadoop@node2:~/.ssh/
并在三台机器上分别执行:chmod 600 ~/.ssh/authorized_keys,保证有查询权限
然后在master节点试验是否配置成功:
ssh + 主机名(node1/node2)
6、hadoop集群配置
a:新建hadoop的name及data的目录
可以随意建立,只要与后面的配置文件保持一致即可
mkdir /dfs
mkdir /dfs/name
mkdir /dfs/data
mkdir /tmp
b:修改hadoop配置文件(均在 /home/hadoop/hadoop-2.7.4/etc/hadoop下)
vim hadoop-env.sh
修改JAVA_HOME:export JAVA_HOME=/home/elfasd/soft/jdk1.8.0_144
vim yarn-env.sh
修改JAVA_HOME:export JAVA_HOME=/home/elfasd/soft/jdk1.8.0_144
vim slaves
添加:
node1
node2
vim core-site.xml
注意,红色部分需要与第一步新建的文件夹一致
vim hdfs-site.xml
注意,红色部分需要与第一步新建的文件夹一致
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
vim yarn-site.xml
c:将master下配置好的hadoop远程传输到node1、node2
scp -r /home/hadoop/hadoop-2.7.4 hadoop@node1:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.4 hadoop@node2:/home/hadoop
d:启动hadoop集群及验证
首先格式化一下namenode:
cd /home/hadoop/hadoop-2.7.4/bin
./hdfs namenode -format
启动集群
cd /home/hadoop/hadoop-2.7.4/sbin
./start-all.sh
启动完毕后,执行jps检查是否启动成功,下面这样应该是成功了
master节点:
ResourceManager
NameNode
SecondaryNameNode
slave节点:
NodeManager
DataNode
e:启执行wordcount验证
新建一个文件,随便写点单词进去,命名为 README.txt
将文件放入hdfs系统
首先建立一个目录,用于存放README.txt
hdfs dfs -mkdir -p /data/input
hdfs dfs -put README.txt /data/input
查看是否放进去了:
hdfs dfs -ls /data/input
执行wordcount
hadoop jar /home/hadoop/hadoop-2.7.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /data/input/data/output/result
执行完毕后,查看结果:
hdfs dfs -cat /data/output/result/part-r-00000
7:在第2步的时候,给出了环境变量,里面也给出了spark的安装目录
cd /home/hadoop/spark/conf
vim spark-env.sh
export SCALA_HOME=
/home/elfasd/soft/scala-2.12.4
export JAVA_HOME=
/home/elfasd/soft/jdk1.8.0_144
export SPARK_MASTER_IP=
master
export SPARK_WORKER_MEMORY=
1g
export HADOOP_CONF_DIR=
/home/hadoop/hadoop-2.7.4/etc/hadoop
vim slaves(不存在的话,cp一个)
master
node1
node2
将spark包远程复制到node1,node2
scp /home/hadoop/spark hadoop@node1:/home/hadoop
scp /home/hadoop/spark hadoop@node2:/home/hadoop
8、集群的启动及验证
spark采用yarn的启动依赖于hadoop集群,所以需要先启动hadoop集群,然后启动spark
也可以自己写个bash脚本
都启动后,执行jps,如下结果应该是启动成功了:
master:
SecondaryNameNode
Master
Worker
ResourceManager
NameNode
node1:
Worker
DataNode
NodeManager
验证:这里直接用spark-shell验证下spark,就不验证集群了
上面我们验证hadoop集群的时候,上传了一个README.txt文件到hdfs的 data/input 的文件
这里复用这个文件进行测试
执行spark-shell进入spark的命令行
val file=sc.textFile("hdfs://master:9000/data/input/README.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
scala的语法
二、杂项,遇到的问题等
1、生成秘钥
cd /root/.ssh/ ssh-keygen -t rsa
复制私钥:
ssh-copy-id 用户名/IP
2、修改主机名称
ubuntu: vim /etc/hostname
3、dfs的前台界面登录不上去
有可能四hosts文件没有配置对
用netstat -nltp查看下真正的监听端口
4、yarn启动失败或者执行jar的时候报内存不够
有可能是内存配置不够,需要在yarn-site.xml中增加配置
红色部分,根据报错的大小调整