从零开始搭建个人大数据集群——环境准备篇
从零开始搭建个人大数据集群(1)——zookeeper
从零开始搭建个人大数据集群(2)——HDFS
从零开始搭建个人大数据集群(3)——YARN
从零开始搭建个人大数据集群(4)——HIVE
从零开始搭建个人大数据集群(5)——HBASE

安装前的准备

1.安装好zookeeper和hadoop
2.准备好spark-2.4.8-bin-hadoop2.7.tgz

解压安装包

cd /opt/packages
tar -zxf spark-2.4.8-bin-hadoop2.7.tgz ../apps
ln -s spark-2.4.8-bin-hadoop2.7 spark

配置spark

spark有spark standalone 和spark on yarn两种模式,这里我直接装standalone模式,在能体验spark集群的情况下也同时能用spark on yarn模式

文件重命名

mv spark-defaults.conf.template spark-defaults.conf
mv spark-env.sh.template spark-env.sh
mv slaves.template slaves
mv log4j.properties.template log4j.properties

spark-env.sh

此文件需要配置jdk路径、hadoop配置文件路径、zookeeper地址

export JAVA_HOME=/usr/local/jdk
export HADOOP_CONF_DIR=/opt/apps/hadoop/etc/hadoop
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hd1:2181,hd2:2181,hd3:2181 -Dspark.deploy.zookeeper.dir=/spark2"

slaves

在这里添加slave节点

hd3
hd4
hd5

spark-defaults.conf

这一项配置非必要,主要是在通过spark执行一些jar包的时候要先把jar包提交到hdfs上,可以先把jar包上传到hdfs上来节省时间,这里配置的就是hdfs上存放spark jars的目录

spark.yarn.jars=hdfs://ns1/home/hadoop/spark_jars/*

log4j.properties

修改日志打印级别

log4j.rootCategory=WARN, console

修改环境变量

vim /etc/profile :
JAVA_HOME=/usr/local/jdk
ZOOKEEPER_HOME=/opt/apps/zookeeper
HADOOP_HOME=/opt/apps/hadoop
HADOOP_COMMON_HOME=${HADOOP_HOME}
HADOOP_HDFS_HOME=${HADOOP_HOME}
HADOOP_MAPRED_HOME=${HADOOP_HOME}
HADOOP_YARN_HOME=${HADOOP_HOME}
HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64

HBASE_HOME=/opt/apps/hbase
HBASE_LIBRARY_PATH=${HBASE_HOME}/lib/native/Linux-amd64-64
HIVE_HOME=/opt/apps/hive
HIVE_CONF_DIR=${HIVE_HOME}/conf
SPARK_HOME=/opt/apps/spark
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$SPARK_HOME/bin

source /etc/profile

启动

这里需要注意一下spark集群的启动脚本也和hadoop的一样叫start-all.sh,所以需要直接指定绝对路径或者起别名,我选择起别名,比较方便

vim ~/.bashrc
# 这些是我用的别名
alias zkcli='zkCli.sh -server hd1:2181,hd2:2181,hd3:2181'
alias zkman='~/zk/ssh_all.sh zkServer.sh'
alias sshall='~/op/ssh_all.sh'
alias sshzk='~/zk/ssh_all.sh'
alias mrhista='mr-jobhistory-daemon.sh start historyserver'
alias mrhisto='mr-jobhistory-daemon.sh stop historyserver'
alias spark-start='/opt/apps/spark/sbin/start-all.sh'
alias spark-stop='/opt/apps/spark/sbin/stop-all.sh'

依次启动zookeeper,hdfs,yarn,spark

zkman start
start-all.sh
spark-start

spark MasterUI默认会占用8080端口,如果8080被其他进程占用的话就会自动找其他端口,我这里就是使用了8081端口,具体用了哪个端口可以在日志里看到

vim /opt/apps/spark/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-hd1.out

21/06/06 20:22:20 WARN Utils: Service 'MasterUI' could not bind on port 8080. Attempting port 8081.

如果想体验spark ha的话可以在其他节点上启动spark master,比如我的master现在是在hd1上,再在hd2上通过/opt/apps/spark/sbin/start-master.sh启动master的话就同时存在了两个master,一个alive状态,一个standby状态
image.png

image.png
而如果这时kill掉hd1的master进程的话过一会儿之后hd2就会变成alive状态
image.png

安装中出现什么问题欢迎发邮件联系我

Q.E.D.