hadoop2.6.5+spark2.1.0+hbase1.2.6完全分布式环境部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fzuzhanghao1993/article/details/78667500

一、服务器环境准备

tips:本例作为测试环境,只使用了两台服务器,实际生产环境至少会有三台以上服务器作一主多从。
如果要配置 hadoop JournalNode zookeeper高可用,则至少需要五台服务器。

服务器centos7 * 2

  • A master:10.10.16.92
  • B slave:10.10.16.93

环境

  • Jdk:1.8
  • Scala:2.11.10
  • Zookeeper:3.4.6
  • Hadoop:2.6.5
  • Spark:2.1.0
  • Hbase:1.2.6
  • Kafka:2.11-1.0.0

二、服务器配置

域名机器名配置

登录服务器A,配置hosts

vi /etc/hosts

添加域名信息,B机也同样操作
host配置

接下来配置机器名信息

vi /etc/sysconfig/network

配置机器名

随后重启

这里写图片描述

确认主机名生效

这里写图片描述

B机同上,但是主机名改为test-slave

SSH免秘登录

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
scp -p ~/.ssh/id_rsa.pub root@test-slave:/root/.ssh/master_rsa.pub

登录到test-slave,执行

cat ~/.ssh/master_rsa.pub >> ~/.ssh/authorized_keys

尝试登陆slave

ssh test-slave

ssh test-slave

同理配置slave

这里写图片描述
这里写图片描述

防火墙配置

为了方便,刚开始部署测试时可以先将防火墙完全关闭(centos 7 systemctl stop firewalld,老版本service iptables stop),等测试OK后再重新开启,这里根据本例需要,配置防火墙开启端口

firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --add-port=50070/tcp --permanent
firewall-cmd --add-port=9070/tcp --permanent
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent
firewall-cmd --add-port=7077/tcp --permanent
firewall-cmd --add-port=8085/tcp --permanent
firewall-cmd --add-port=50090/tcp --permanent
firewall-cmd --add-port=16000/tcp --permanent
firewall-cmd --add-port=60010/tcp --permanent
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --add-port=6066/tcp --permanent

三、软件安装并启动

上传软件安装包,或是直接用wget下载

  • jdk-8u144-linux-x64.tar.gz
  • scala-2.11.0.tgz
  • zookeeper-3.4.6.tar.gz
  • kafka_2.11-1.0.0.tgz
  • hbase-1.2.6-bin.tar.gz
  • hadoop-2.6.5.tar.gz
  • spark-2.1.0-bin-without-hadoop.tgz

本例测试环境全部统一上传到/usr/local下
逐个解压 tar -xvf xxx.tar.gz
随后配置环境变量

vi /etc/profile

#java,hadoop
export JAVA_HOME=/usr/local/jdk1.8.0_144
export HADOOP_HOME=/usr/local/hadoop-2.6.5
export YARN_HOME=$HADOOP_HOME
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:/usr/local/apache-maven-3.0.5/bin:/usr/local/git/bin:$PATH
export CLASS_PATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib
#scala
export SCALA_HOME=/usr/local/scala-2.11.0
export PATH=$SCALA_HOME/bin:$PATH
#spark
export SPARK_HOME=/usr/local/spark-2.1.0/spark-2.1.0-bin-without-hadoop
#hbase
export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=$HBASE_HOME/bin:$PATH
#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

配置完成后source生效

source /etc/profile

自行检验环境变量是否生效,比如java -version
解压并配置JAVA_HOME,SCALA_HOME就等于安装了java与scala,接下来开始大数据应用安装。

Hadoop安装并启动

因为只需要hadoop的hdfs用来支持hbase,mapreduce交由spark处理,这里不需要启动hadoop yarn
在/usr下创建临时文件夹hadoop-data

进入$HADOOP_HOME/etc/hadoop

编辑core-site.xml

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/hadoop-data</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://test-master:9070</value>
        </property>
</configuration>

编辑hadoop-env.sh

将export JAVA_HOME={JAVA_HOME}直接改为

export JAVA_HOME=/usr/local/jdk1.8.0_144

编辑hdfs-site.xml

<configuration>
         <property>
             <name>dfs.replication</name>
             <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                 <name>dfs.namenode.rpc-address</name>
                 <value>test-master:9070</value>
        </property>
        <property>
                <name>dfs.namenode.rpc-bind-host</name>
                <value>0.0.0.0</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/hadoop-data/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/hadoop-data/dfs/data</value>
        </property>
</configuration>

编辑slaves

这里写图片描述

B机器(test-slave)同主机相同配置

随后进入A机器,执行$HADOOP_HOME/bin/hadoop namenode -format,首次执行即可

这里写图片描述

然后启动hadoop $HADOOP_HOME/sbin/start-dfs.sh
并确认启动namenode

这里写图片描述

Slave确定启动datanode

这里写图片描述

访问10.10.16.92:50070,确认各节点正常

这里写图片描述

Zookeeper安装并启动

建立zookeeper的data文件夹 /usr/zoo-data
进入zookeeper配置文件夹conf

cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

文件内容修改如下

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zoo-data
dataLogDir=/usr/zoo-log
clientPort=2181
server.1=test-master:2888:3888
server.2=test-slave:2888:3888

再进入dataDir文件夹下创建myid文件,内容为当前主机标号数字,比如test-master对应server.1,则myid中内容为1

接下来进入bin文件夹启动zookeeper

./zkServer start

再进入B机,同样方式启动
最后执行jps并查看运行状态

./zkServer status

确认连接

./zkCli -server test-master

这里写图片描述

Hbase集成并启动,HA模式

进入hbase 的conf文件夹
配置hbase-env.sh
修改以下参数,没有的新增

export JAVA_HOME=/usr/local/jdk1.8.0_144
export HBASE_CLASSPATH=/usr/local/hadoop-2.6.5/etc/hadoopexport 
export HBASE_MANAGES_ZK=false

配置hbase-site.xml

<configuration>
        <property>
           <name>hbase.rootdir</name>
           <value>hdfs://test-master:9070/hbase</value>
         </property>
         <property>
           <name>hbase.cluster.distributed</name>
           <value>true</value>
         </property>
       <!-- <property><name>hbase.master</name><value>test-master</value>
自定义master,存在单点故障,HA模式不需要设置,交给zookeeper
         </property>-->
        <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
        </property>
         <property>
            <name>hbase.zookeeper.quorum</name>
            <value>test-master,test-slave</value>
        </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>60000000</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>
        <property>
                <name>hbase.master.info.port</name>
                <value>60010</value>
        </property>
</configuration>

配置regionservers
修改localhost为test-slave

B机器(test-slave)做同样配置,或直接拷贝

scp hbase-env.sh hbase-site.xml regionservers root@test-slave:/usr/local/hbase-1.2.6/conf/

启动hbase

A机器:$HBASE_HOME/bin/start-hbase.sh
B机器:$HBASE_HOME/bin/hbase-daemon.sh start master

A,B机器确认启动状态

这里写图片描述
这里写图片描述

当前master、slave信息

这里写图片描述

备用master

这里写图片描述

主节点挂掉后slave升级为主节点
这里写图片描述

Spark集成并启动,HA模式

进入spark配置文件目录
编辑spark-env.sh

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-2.6.5/bin/hadoop classpath)
SPARK_LOCAL_DIRS=/usr/local/spark-2.1.0-bin-without-hadoop/local #配置spark的local


#SPARK_MASTER_IP=test-master 手动指定master节点ip或hostname,存在单点故障
SPARK_MASTER_WEBUI_PORT=8085 #web页面端口
#SPARK_MASTER_HOST=test-master
export SPARK_MASTER_OPTS="
-Dspark.deploy.defaultCores=4 
-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=test-master:2181,test-slave:2181 -Dspark.deploy.zookeeper.dir=/spark" #spark-shell启动使用核数

SPARK_EXECUTOR_INSTANCES=1
SPARK_WORKER_CORES=4 #Worker的cpu核数
SPARK_WORKER_MEMORY=512m #worker内存大小
SPARK_WORKER_DIR=/usr/local/spark-2.1.0-bin-without-hadoop/worker #worker目录
SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800" #worker自动清理及清理时间间隔
SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://test-master:9070/spark/history" #history server页面端口>、备份数、log日志在HDFS的位置
SPARK_LOG_DIR=$SPARK_HOME/logs #配置Spark的log日志
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/ #配置hadoop的配置路径

编辑spark-defaults.conf

#spark.master                     spark://test-master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://test-master:9070/spark/history
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              1g
spark.executor.memory             500m
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

编辑slaves

test-slave

配置文件拷贝到B机器

scp hbase-env.sh hbase-site.xml regionservers root@test-slave:/usr/local/hbase-1.2.6/conf/

启动spark

$SPARK_HOME/sbin/start-all.sh

如果出现JAVA_HOME is not set问题,可以根据报错机器在对应机器的spark-config.sh里添加export JAVA_HOME=/usr/local/jdk1.8.0_144

确认启动情况

这里写图片描述
这里写图片描述
这里写图片描述

再进入B机器,执行start-master.sh,启动备用master

这里写图片描述
这里写图片描述

Kafka集成并启动

进入kafka的config配置目录
编辑server.properties
注释brokerid,也可手动配置broker.id=0
修改如下配置

listeners=PLAINTEXT://test-master:9092
advertised.listeners=PLAINTEXT://test-master:9092
log.dirs=/logs/kafka-logs
zookeeper.connect=test-master:2181,test-slave:2181

B机
注释brokerid,也可以手动配置broker.id=1
修改如下配置

listeners=PLAINTEXT://test-slave:9092
advertised.listeners=PLAINTEXT://test-slave:9092
log.dirs=/logs/kafka-logs
zookeeper.connect=test-master:2181,test-slave:2181

启动kafka(A,B机都要)
进入kafka/bin

./kafka-server-start.sh ../config/server.properties  &

这里写图片描述
这里写图片描述

至此整个集成环境部署完成,可以结合前几篇博客中提到的demo进行测试验证。

猜你喜欢

转载自blog.csdn.net/fzuzhanghao1993/article/details/78667500