修改主机名和HOSTS
修改各台机器的主机名
nano /etc/hostname
主机名的命名规则如下
spark-001
spark-002
...
修改各台机器的hosts文件
nano /etc/hosts
配置如下
127.0.0.1 localhost
192.168.100.201 spark-001
192.168.100.202 spark-002
...
配置无密码SSH登录
无密码SSH登录需要各台主机能无密码SSH到localhost,并且Master即spark-001能无密码SSH到各个Slave。
首先配置无密码SSH到localhost,需要安装openssh-server,并生成ssh公钥。
apt-get install openssh-server
ssh-keygen -t rsa -P ""
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
测试能否SSH到localhost
ssh localhost
配置Master能免密码SSH到Slave,需要将Master的公钥复制到Slave的authorized_keys中。首先将公钥复制到各台Slave机器中。
# 在spark-001上运行
scp /root/.ssh/id_rsa.pub google@192.168.100.202:/home/google/
scp /root/.ssh/id_rsa.pub google@192.168.100.203:/home/google/
...
在各台Slave中将Master的公钥复制到authorized_keys。
# 在各台Slave上运行
cat /home/google/id_rsa.pub >> /root/.ssh/authorized_keys
测试能够免密码SSH到各台Slave
# 在spark-001上运行
ssh spark-002
ssh spark-003
...
JDK安装
在各台机器上安装JDK
apt-get install default-jdk
编辑~/.bashrc文件,添加如下内容:
export JAVA_HOME=/usr/lib/jvm/default-java
让环境变量生效,执行如下代码:
source /etc/profile
检验JAVA是否安装成功
java -version
Hadoop安装
先在Master主机上安装Hadoop,然后将Master上配置好的Hadoop发送给各个Slave。首先在官网下载最新的Hadoop安装包。最新版下载地址为http://hadoop.apache.org/releases.html
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz
在Master主机上执行以下命令:
tar -zxf ~/hadoop-2.8.0.tar.gz -C /usr/local
mv /usr/local/hadoop-2.8.0/ /usr/local/hadoop
编辑/etc/profile文件,添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
让环境变量生效,执行如下代码:
source ~/.bashrc
检验hadoop是否安装成功
hadoop version
修改/usr/local/hadoop/etc/hadoop目录下Hadoop配置文件。
- 修改slaves文件,这里把DataNode的主机名写入该文件,每行一个。
spark-001
spark-002
spark-003
...
- 修改core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://spark-001:9000</value>
</property>
</configuration>
- 修改hdfs-site.xml
# Master配置
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value>
</property>
</configuration>
# Slave配置
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value>
</property>
</configuration>
- 修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>spark-001</value>
</property>
</configuration>
配置好后,将Master上的/usr/local/Hadoop文件夹复制到各个节点上。在 Master 节点主机上执行:
rm -f /usr/local/hadoop/logs/*
tar -zcf ~/hadoop.tar.gz /usr/local/hadoop
scp ~/hadoop.tar.gz spark-002:/home/google
scp ~/hadoop.tar.gz spark-003:/home/google
...
在Slave上执行:
rm -rf /usr/local/hadoop/
tar -zxf ~/hadoop.master.tar.gz -C /usr/local
启动Hadoop集群,在Master上执行
/usr/local/hadoop/bin/hdfs namenode -format
/usr/local/hadoop/sbin/start-all.sh
Spark安装
首先在Master上安装,安装完成后分发到各Slave节点。首先从Spark官网下载最新的Spark软件包。http://spark.apache.org/downloads.html
在Master上运行如下命令
tar -zxf ~/spark-2.1.0-bin-hadoop2.7.tgz -C /usr/local/
mv /usr/local/spark-2.1.0-bin-hadoop2.7 /usr/local/spark
配置环境变量
在Master中编辑/etc/profile文件,添加如下内容
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
让环境变量生效,执行如下代码
source ~/.bashrc
修改/usr/local/spark/conf/下的配置文件
- 配置slaves文件
将 slaves.template 拷贝到 slaves
cp /usr/local/spark/conf/slaves.template /usr/local/spark/conf/slaves
slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容:
spark-001
spark-002
spark-003
...
- 配置spark-env.sh文件
将 spark-env.sh.template 拷贝到 spark-env.sh
cp /usr/local/spark/conf/spark-env.sh.template /usr/local/spark/conf/spark-env.sh
编辑spark-env.sh,添加如下内容
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.100.201
SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址
配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上。在Master主机上执行如下命令:
tar -zcf ~/spark.tar.gz /usr/local/spark
scp ~/spark.tar.gz spark-002:/home/google
scp ~/spark.tar.gz spark-003:/home/google
...
在各台Slave节点上执行下面命令
rm -rf /usr/local/spark/
tar -zxf ~/spark.tar.gz -C /usr/local
启动Spark集群
- 启动Hadoop集群
启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:
/usr/local/hadoop/sbin/start-all.sh
- 启动Spark集群
启动Master节点,在Master节点主机上运行如下命令
/usr/local/spark/sbin/start-master.sh
- 在Master节点上运行jps命令,查看进程
启动所有Slave节点,在Master节点主机上运行如下命令:
/usr/local/spark/sbin/start-slaves.sh
- 在Salve节点上运行jps命令,查看进程
在浏览器上查看Spark独立集群管理器的集群信息在Master主机上打开浏览器,访问http://spark-001:8080
关闭Spark集群
- 关闭Master节点
/usr/local/spark/sbin/stop-master.sh
- 关闭Worker节点
/usr/local/spark/sbin/stop-slaves.sh
- 关闭Hadoop集群
/usr/local/hadoop/sbin/stop-all.sh
配置程序说明
程序运行准备
- 服务器准备
1 各台服务器命名规则为spark-001、spark-002
2 各台服务器能够通过apt-get顺利安装软件
3 Master上将Hadoop安装包和Spark安装包放在根目录
- 程序配置
程序需要配置四个参数
hostcnt:服务器总台数,包括Master和Slave
deployedcnt:已经配置好的服务器台数
hadoop_name:主目录Hadoop安装包名,不包括.tar.gz后缀
spark_name:主目录Spark安装包名,不包括.tar.gz后缀