最近准备倒腾spark.网上的搭建过程感觉都相当的长,自己在用virtual box搞了3台centos 7虚拟机,搭建了一次,发现可以不用那么复杂.就把自己的过程写下来.
过程就分几步:
- 系统准备工作.
- ssh免密码登录.
- 环境变量
- hadoop配置
- spark配置
- 测试
1.系统准备工作
首先是操作系统安装
iso镜像,建议选择DVD,不要用minimal.不然后面少各种命令.也是个麻烦.
新建虚拟机的时候,网络类型可以选仅主机(host only)网络,这样没接网线的时候也可以用.挂载iso镜像,一路下一步.选择Basic web server就了事了. ip最好还是改成静态.要是dhcp, 虚拟分配到的ip不是固定的.ip也可以在安装完毕以后再设置也可以. 用nmtui命令配置网络,也是图形界面了.难度不大.
以下操作都在root用户下面执行,并且每台上面都要运行
安装java,这里安装了jdk8
mount /dev/cdrom /media/cdrom/
yum --disablerepo=\* --enablerepo=c7-media install java-1.8.0-openjdk-devel
安装好以后测试一下
javac -version
修改/etc/hosts
192.168.56.12 slave1
192.168.56.13 slave2
ip请根据实际情况填写
修改 /etc/hostname
按照机器所处的角色.每台分别写入master, slave1,slave2
为了不必要的麻烦,把防火墙设置为受信区域.省得麻烦.
firewall-cmd --set-default-zone=trusted systemctl restart firewalld
2.ssh免密码登录.
创建hadoop运行用户
adduser -U hadoop passwd hadoop #设置密码 #测试一下,顺便生成密钥,设置免密码登录 su hadoop ssh-keygen #一路回车 ssh-copy-id hadoop@master ssh-copy-id hadoop@slave1 ssh-copy-id hadoop@slave2 exit
重启虚拟机.
首先把hadoop和spark的压缩包上传到master的/home/hadoop目录下面.
我的压缩包分别是 hadoop-2.6.4.tar.gz spark-1.6.1-bin-hadoop2.6.tgz
3.安装包和环境变量准备
以下操作都在master上以hadoop用户执行
直接解压
tar -xf ./hadoop-2.6.4.tar.gz tar -xf ./spark-1.6.1-bin-hadoop2.6.tgz
修改 ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_HOME=/home/hadoop/hadoop-2.6.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export SPARK_HOME=/home/hadoop/spark-1.6.1-bin-hadoop2.6 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin #如果你的java,hadoop,spark版本不同,请修改相应的路径
加载刚刚的设置
source ~/.bashrc
4.hadoop安装.
创建临时文件目录
cd ~/hadoop-2.6.4 mkdir tmp
修改etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.6.4/tmp</value> </property> </configuration>
修改etc/hadoop/hdfs-site.xml, 3份复制
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
创建文件etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
修改etc/hadoop/yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> </configuration>
修改 etc/hadoop/slaves
master slave1 slave2
把配置好的hadoop也复制到slave1,slave2
scp -r ~/hadoop-2.6.4 slave1:/home/hadoop/ scp -r ~/hadoop-2.6.4 slave2:/home/hadoop/
hdfs准备
hdfs namenode -format start-dfs.sh
如果启动过程中,出现ssh登录的指纹信息,直接输入yes确认.
启动完毕以后可以用jps,在每台机器上看一下.
master上有,
SecondaryNameNode
DataNode
NameNode
而slave上只有datanode
运行
start-yarn.sh
再用jps看看. master上会多出ResourceManager 和 NodeManager, 而slave只多出来NodeManager
5.spark安装
如果要用scala,需要安装,我用python,暂时就不安装了
cd ~/spark-1.6.1-bin-hadoop2.6/ cp conf/spark-env.sh.template conf/spark-env.sh
修改conf/spark-env.sh,加入一下内容, ip填入master的实际ip
export SPARK_MASTER_IP=192.168.56.11 export SPARK_WORKER_MEMORY=512m #内存可以看情况 export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.4/etc/hadoop
复制slaves文件模板
cp conf/slaves.template conf/slaves
conf/slaves加入一下内容
master slave1 slave2
配置完毕,复制到slave机器
scp -r ~/spark-1.6.1-bin-hadoop2.6 hadoop@slave1:/home/hadoop scp -r ~/spark-1.6.1-bin-hadoop2.6 hadoop@slave2:/home/hadoop
启动
start-all.sh
6.测试
hdfs dfs -copyFromLocal ~/spark-1.6.1-bin-hadoop2.6/README.md / pyspark print sc.textFile('/README.md').cache().count()