**
Spark完全分布式平台搭建
**
波仔的搭建的设备是3台centos7机器,使用的finallshell通过开启centos机的反向链接来控制spark平台的搭建。
第一步:设置Master机可以无密码登陆Slave机。
如下,
查看当前所有电脑的ip地址
(搭建分布式的机器最好需要在同一个局域网内)
命令:ifconfig
如例图:
机器的名称和ip如下:
192.168.0.102 master
192.168.0.104 slave01
192.168.0.106 slave02
个人习惯怕麻烦我的电脑用户都root
用master机 ping 你的slave机器双测试双方的联通性。
命令:ping (目的机器的ip)
如例图:
分别修改机器名
命令:vim /etc/hostname
master 中加入 master
slave01 中加入 slave01
slave02 中加入 slave02
重启三台机器。
三台电脑分别都配置
命令:vim /etc/hosts
192.168.0.102 master
192.168.0.104 slave01
192.168.0.106 slave02
开始配置密钥实现 master无密码登陆(master,slave操作)
命令:
yum install openssh-server
ssh-keygen -t rsa -P “”
(默认将master生成的密钥放在~/.ssh下)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将密钥传到slave上:
命令:
scp ~/.ssh/id_rsa.pub root@slave01:/home/hadoop
scp ~/.ssh/id_rsa.pub root@slave02:/home/hadoop
(hmoe/hadoop是master密钥的接受文件夹)
接受好以后将master的密钥用于代替slave的密钥
命令:
cat /home/hadoop/id_rsa.pub >> ~/.ssh/authorized_keys
测试:
命令:
(在master上)
ssh slave01
ssh slave02
第二步:安装jdk
波仔使用的是jdk1.8(网上搜索自行下载)
(安装之前先将centos自带的jdk卸载干净)
在/home上新建文件夹jdk
命令:
cd /home/
mkdir jdk
打开jdk并将jdk-1.8上传到机器上(拖拽即可),进行解压
命令:
tar -zxvf jdk-1.8
将解压出的文件运动到/usr/local文件夹中
命令:
mv jdk-1.8 /usr/local
配置jdk的环境打开~/.bashrc这个全局变量的文件
命令:
vim ~/.bashrc
在里面加入
> export JAVA_HOME=/usr/local/jdk-1.8 export JRE_HOME=${JAVA_HOME}/jre
> export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
> export PATH=${JAVA_HOME}/bin:$PATH
令其生效
命令:
source ~/.bashrc
第三步:安装hadoop
三台机器都做
下载hadoop2.7.7(hadoop-2.7.7.tar.gz)
解压
命令: tar -zxvf hadoop-2.7.7.tar.gz
并在解压出的文件主目录分别下创建
tmp、dfs、dfs/name、dfs/node、dfs/data
命令:
cd /opt/hadoop-2.7.7
mkdir tmp
mkdir dfs
cd dfs
mkidr name
mkdir node
mkdir dfs/data
Master机器上 记得打开机器需要用的端口
在hadoop-2.7.7/etc/hadoop开配置文件
第一个是hadoop-env.sh
export JAVA_HOME=/usr/local/jdk
第二个是core-site.xml(tmp为先前创建的)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.7.7/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.spark.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.spark.groups</name>
<value>*</value>
</property>
</configuration>
第三个是hdfs-site.xml dfs/name 与dfs/data 是之前创建的文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.7.7/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.7.7/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
第四个是mapred-site.xml要得到这个文件复制mapred.site.xml.template即可
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
第五个是yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<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>
第六个:修改slaves文件添加
master
slave01
slave02
修改完以后将 将这个文件夹发送给slave机器
scp -r hadoop root@机器名称:/usr/local/hadoop-2.7.7/etc
启动
hadoop namenode -format
start-all.sh
第四部:安装spark
1.下载spark-2.1.0-bin-hadoop2.7.tgz,放到opt下解压。
2. 将spark环境变量配置到/etc/profile中
> export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7
> export PATH=$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH
编辑spark-env.sh文件,添加以下内容
> export JAVA_HOME=/usr/local/jdk export SPARK_MASTER_IP=192.168.0.102
> export SPARK_WORKER_MEMORY=8g export SPARK_WORKER_CORES=4
> export SPARK_EXECUTOR_MEMORY=4g export HADOOP_HOME=/usr/local/hadoop-2.7.7/
> export HADOOP_CONF_DIR=/usrlocal/hadoop-2.7.7/etc/hadoop
> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/jdk/jre/lib/amd64
3.配置slaves文件将slaves.template 拷贝为slaves文件并添加
master
slave01
slave02
4.将配置发送与slave机器
scp -r conf root@另一台机器名:/usrlocal/spark-2.1.0-bin-hadoop2.7
5.启动spark
./start-all.sh
参考文档:
[http://dblab.xmu.edu.cn/blog/1177-2/
https://www.jianshu.com/p/d28ee2cfb1ee
https://www.cnblogs.com/zhangyongli2011/p/10572152.html]