Spark2.4+Hadoop2.7+Zookeeper3.4+HBase2.1集群部署

一、操作系统及软件

操作系统:Cent OS 7.2
应用软件:软件可以到官网去下,也可以使用本站提供的地址
Spark 2.4.0: http://www.gaoq.vip/download/spark-2.4.0-bin-hadoop2.7.tgz
Hadoop 2.7.7:http://www.gaoq.vip/download/hadoop-2.7.7.tar.gz
JDK 1.8:http://www.gaoq.vip/download/jdk-8u201-linux-x64.tar.gz
Scala 2.11.12:http://www.gaoq.vip/download/scala-2.11.12.rpm
本次部署使用三个节点:

机器名 IP地址
Master 192.168.8.185
Slave1 192.168.8.186
Slave2 192.168.8.187

下载后上传到/opt路径下。为方便操作,本次部署使用root账户,以/opt文件夹为部署地址。上传文件后,用tar命令解压缩,然后mv命令修改文件夹名称,便于后续操作。

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 spark2.4
    
tar -zxvf hadoop-2.7.7.tar.gz
mv hadoop-2.7.7 hadoop2.7
    
tar -zxvf jdk-8u201-linux-x64.tar.gz
mv jdk-8u201-linux-x64 jdk1.8

tar -zxvf zookeeper-3.4.13.tar.gz
mv zookeeper-3.4.13 zookeeper3.4

tar -zxvf hbase-2.1.2-bin.tar.gz
mv hbase-2.1.2-bin hbase2.1
    
rpm -ivh scala-2.11.12.rpm		#直接安装scala

最终效果是在/opt下有五个文件夹:spark2.4,hadoop2.7,jdk1.8,zookeeper3.4,hbase2.1

二、配置Linux环境

2.1 修改hosts文件

vi /etc/hosts	#三台设备都需要修改

#增加如下内容
#Master、Slave1、Slave2是三台机器的机器名
192.168.8.185 Master
192.168.8.186 Slave1
192.168.8.187 slave2

source /etc/hosts	#使修改的文件生效

可以使用如下命令修改主机名,立刻生效,并且重启有效

 hostnamectl set-hostname [newname]

2.2 关闭防火墙

systemctl stop firewalld.service //关闭防火墙服务
systemctl disable firewalld.service //禁止防火墙服务开机启动
vi /etc/sysconfig/selinux 	#将SELINUX属性修改为disabled,关闭SELINUX
source /etc/sysconfig/selinux

2.3 Master到Slave免密码登录

Master操作

ssh-keygen -t rsa -P ''      #生成密码对id_rsa和id_rsa.pub,默认位置"/root/.ssh"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys    #把id_rsa.pub追加到授权的key
vi /etc/ssh/sshd_config     #修改ssh配置文件

#去掉下面内容的注释
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

service sshd restart		#重启ssh服务
ssh localhost             #验证无密码登录本机是否成功 
scp /root/.ssh/id_rsa.pub root@Slave1:/root/   #把公钥复制到slave设备
scp /root/.ssh/id_rsa.pub root@Slave2:/root/

Slave操作
两个slave分别执行下面操作

mkdir /root/.ssh		#此文件夹可能已经存在
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys     #追加Master的公钥到授权文件
vi /etc/ssh/sshd_config     #修改ssh配置文件

#去掉下面内容的注释
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

service sshd restart		#重启ssh服务。重启后可以从master测试ssh访问slave
rm /root/id_rsa.pub			#删除文件

2.4 Slave到Master免密码登录

Slave操作
两个slave分别执行下面操作

  ssh-keygen -t rsa -P ''
  cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  scp /root/.ssh/id_rsa.pub root@Master:/root/

Master操作

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm /root/id_rsa.pub

2.5 配置时间同步服务

Master操作

yum install ntp		#安装ntp服务

设置向192.168.8.0/24的机器提供时间服务。修改 /etc/ntp.conf,加入下面内容

restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap

restrict管控权限:
nomodify - 用户端不能更改ntp服务器的时间参数
noquery - 用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap - 不提供trap远端登陆

systemctl start ntpd.service	#启动ntp服务
systemctl enable ntpd.service	#设置ntp服务开机启动
netstat -unlnp					#检查ntp端口,看到123端口说明端口开启

Slave操作
修改/etc/ntp.conf,加入下面内容

server 192.168.8.185

systemctl start ntpd.service	#启动ntp服务
systemctl enable ntpd.service	#设置ntp服务开机启动

2.6 修改/etc/profile

vi /etc/profile	    #三台设备都需要修改

#增加如下内容
export JAVA_HOME=/opt/jdk1.8
export SCALA_HOME=/usr/share/scala
export SPARK_HOME=/opt/spark2.4
export ZK_HOME=/opt/zookeeper3.4
export HBASE_HOME=/opt/hbase2.1
export HADOOP_HOME=/opt/hadoop2.7
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$ZK_HOME/bin:$HBASE_HOME/bin:$PATH

source /etc/profile	   #使修改的文件生效

三、配置集群

3.1 Hadoop集群

  1. 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8
  1. 修改$HADOOP_HOME/etc/hadoop/slaves

#去掉localhost ,增加下面内容
Slave1
Slave2

  1. 修改$HADOOP_HOME/etc/hadoop/core-site.xml

      
          fs.defaultFS
          hdfs://Master:9000
      
      
         io.file.buffer.size
         131072
     
     
          hadoop.tmp.dir
          /opt/hadoop2.7/tmp
     

  1. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
     
        
          dfs.namenode.secondary.http-address
          Master:50090
        
        
          dfs.replication
          2
        
        
          dfs.namenode.name.dir
          file:/opt/hadoop2.7/hdfs/name
        
        
          dfs.datanode.data.dir
          file:/opt/hadoop2.7/hdfs/data
        
    
  1. 修改$HADOOP_HOME/etc/hadoop/mapred-site.xml
 cp mapred-site.xml.template mapred-site.xml

  
    mapreduce.framework.name
    yarn
  
  
          mapreduce.jobhistory.address
          Master:10020
  
  
          mapreduce.jobhistory.address
          Master:19888
  

  1. 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml
 
     
         yarn.nodemanager.aux-services
         mapreduce_shuffle
     
     
         yarn.resourcemanager.address
         Master:8032
     
     
         yarn.resourcemanager.scheduler.address
         Master:8030
     
     
         yarn.resourcemanager.resource-tracker.address
         Master:8031
     
     
         yarn.resourcemanager.admin.address
         Master:8033
     
     
         yarn.resourcemanager.webapp.address
         Master:8088
     

在Slave1和Slave2上做同样的修改,或者直接将hadoop2.7文件夹拷贝过去

3.2 Spark集群

  1. 修改$SPARK_HOME/conf/spark-env.sh
 cp spark-env.sh.template spark-env.sh

#增加以下内容
export JAVA_HOME=/opt/jdk1.8
export SCALA_HOME=/usr/share/scala
export HADOOP_HOME=/opt/hadoop2.7
export HADOOP_CONF_DIR=/opt/hadoop2.7/etc/hadoop
export SPARK_MASTER_IP=192.168.8.185
export SPARK_MASTER_HOST=192.168.8.185
export SPARK_LOCAL_IP=192.168.8.185 #此处是本设备地址,三台机器不一样
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2
export SPARK_HOME=/opt/spark2.4
export SPARK_DIST_CLASSPATH=$(/opt/hadoop2.7/bin/hadoop classpath)

  1. 修改$SPARK_HOME/conf/slaves
 cp slaves.template slaves

#删除localhost,增加以下内容
Slave1
Slave2

在Slave1和Slave2上做同样的修改,或者直接将spark2.4文件夹拷贝过去(注意修改不一样的内容)

3.3 Zookeepr集群

  1. 创建文件夹和文件
 mkdir  /opt/zookeeper3.4/data		
 mkdir  /opt/zookeeper3.4/dataLog
 cd /opt/zookeeper3.4/data		
 touch myid				#创建文件
 vi myid				#文件内容:Master、Slave1、Slave2分别设置为123
  1. 修改$ZK_HOME/conf/zoo.cfg,加入如下内容

dataDir=/opt/zookeeper3.4/data
dataLogDir=/opt/zookeeper3.4/dataLog
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888

注意这里的.1.2.3要和myid文件中的数字对应上

3.4 HBase集群

  1. 修改$HBASE_HOME/conf/hbase-env.sh,加入如下内容

export JAVA_HOME=/opt/jdk1.8
export HADOOP_HOME=/opt/hadoop2.7
export HBASE_HOME=/opt/hbase2.1
export HBASE_CLASSPATH=/opt/hadoop2.7/etc/hadoop
export HBASE_PID_DIR=/opt/hbase2.1/pids
export HBASE_MANAGES_ZK=false

  1. 修改$HBASE_HOME/conf/regionservers,加入如下内容

#删除localhost,增加以下内容
Slave1
Slave2

  1. 修改$HBASE_HOME/conf/hbase-site.xml,加入如下内容

	
 		hbase.rootdir
 		hdfs://Master:9000/hbase
	
 	
	
 		hbase.zookeeper.property.clientPort
 		2181
	
	
	
 		zookeeper.session.timeout
 		120000
	
	
	
		hbase.master.maxclockskew
		150000
	
	
	
 		hbase.zookeeper.quorum
 		Master,Slave1,Slave2
	
	
	
 		hbase.tmp.dir
 		/root/hbase/tmp
	
	
	
 		hbase.cluster.distributed
 		true
	
  	
  	
    	hbase.master
    	Master:60000
  

四、启动和验证集群

在master节点上启动或者停止服务

hadoop namenode -format					#hadoop格式化操作
/opt/hadoop2.7/sbin/start-all.sh		#启动hadoop
/opt/spark2.4/sbin/start-all.sh			#启动spark
zkServer.sh start						#启动zookeeper服务,需要在每个节点上执行
zkServer.sh status						#查看运行状态
start-hbase.sh							#启动hbase

在master上用jps查看状态,内容如下

Master #spark
ResourceManager #hadoop
NameNode #hadoop
SecondaryNameNode #hadoop
QuorumPeerMain #zookeeper
HMaster #HBase

在slave上用jps查看状态,内容如下

DataNode
Worker
QuorumPeerMain
NodeManager
HRegionServer

访问地址:

服务 地址
Hadoop http://192.168.8.185:8088/
Spark http://192.168.8.185:8080/
spark-shell http://192.168.8.185:4040/
HDFS http://192.168.8.185:50070/
HBase http://192.168.8.185:16010/

异常处理:
1、Hadoop的Datanode启动后消失:原因是hadoop格式化后再次进行格式化,master的clusterId更新,但是更新不会自动同步到slave,导致不一致。按照master的clusterId修改slave的clusterId,保持一致即可。
2、HBase启动后消失,日志报错没有到主机的路由。最后发现竟然是重启之后,防火墙又启动了。关闭防火墙hbase正常
3、提交job: spark-submit --master yarn --deploy-mode client --class com.HBaseShow /opt/What.jar
4、Spark打包的时候,jar只带本身的包
5、虚拟内存溢出问题,在yarn-site.xml增加下面内容

yarn.nodemanager.vmem-pmem-ratio
2.5

6、遇到jar包找不到的时候,可以做下面两件事:
1)拷贝 hbaes2.1/lib下的所有文件到hadoop2.7/share/hadoop/common/lib
2)拷贝 hbase2.1/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar 到 spark2.4/jars

你可能感兴趣的:(大数据)