大数据完全分布式环境集群建立(二)

方针

本文首要讲述大数据干流框架 hadoop、hive、hbase、spark、flink在完全分布式环境下的装置和运用,首要分为三个部分:

  1. docker集群建立
  2. hadoop、hive、hbase、spark、flink装置装备
  3. hadoop、hive、hbase、spark、flink的基础运用,包含hadoop数据传输、hive sql操作、spark sql操作、自定义spark算子、flink sql、自定义flink算子、spark机器学习、hbase数据导入、hive数据导入相关操作

因而,本文分为三篇内容,其他两篇详见

大数据环境建立(一)

大数据环境建立(三)

组件版本

jdk 1.8

hadoop 3.2.4

hive 3.1.3

hbase 2.4.14

spark 3.2.2

flink 1.14.5

节点

描述 进程 master work-1 work-2
hadoop元数据 NameNode
hadoop辅佐元数据 SecondaryNameNode
hadoop数据 DataNode
yarn资源调度 ResoueceManager
yarn任务 NodeManager
hive服务 hiveserver2
zookeeper服务 zookeeper
hbase主节点 HMaster
hbase作业节点 HRegionServer
spark主节点 Master
spark作业节点 Worker
flink主节点 StandaloneSessionClusterEntrypoint
flink作业节点 TaskManagerRunner

前言

1. docker 容器衔接

衔接工具

本文推荐运用vs code衔接docker容器,需求先装置Remote – Containers插件。装置完成后,翻开vs code的docker面板,界面如下:

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)
衔接到master节点,界面如下:

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

此界面首要分为3个部分:

  • 文件办理
  • 代码修正
  • 终端

2. 数据保存方位

大数据组件、日志保存方位

大数据组件保存在同享文件夹下,便于我们方便的修正装备文件,以及检查相关日志文件。只需求在本机完成装备,在master、work-1、work-2节点均可见。

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

日志目录也在同享文件夹下。

hadoop文件保存方位

为了进步集群的速度,hdfs文件保存在各个容器中,本文设置的目录为:

/home/hadoop/data

3. 声明

本文并没有装备集群的高可用,这是因为电脑功能有限,需求在电脑上一起装置hadoop、hive、hbase、spark、flink,假如hadoop、hbase、spark、flink均装备高可用的话,电脑功能不行,相关高可用的装备可以参阅文末的参阅文献。

hadoop 3.2 环境装置

  1. 修正 etc/hadoop/hadoop-env.sh

    export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341
    
  2. 修正etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/data</value>
        </property>
        <property>
            <name>hadoop.proxyuser.hadoop.hosts</name>
            <value>*</value>
        </property>
        <property>
            <name>hadoop.proxyuser.hadoop.groups</name>
            <value>*</value>
        </property>
    </configuration>
    
  3. 修正etc/hadoop/hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    
  4. 修正etc/hadoop/mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.application.classpath</name>
                    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
        </property>
    </configuration>
    
  5. 修正etc/hadoop/yarn-site.xml

    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
      <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>
    
  6. 修正etc/hadoop/workers

    master
    work-1
    work-2
    
  7. 格式化NameNode

    hdfs namenode -format
    
  8. hadoop发动相关指令

    start-dfs.sh
    start-yarn.sh
    stop-dfs.sh
    stop-yarn.sh
    
  9. 检查hadoop进程

    jps
    

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

hive 3 环境装置

装置hive需求mysql存储hive的元数据,因而先装置mysql,再装备hive,最终发动hive服务

  1. MySQL装置

    装置mysql
    sudo apt install mysql-server
    

    答应mysql长途拜访

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
    

    修正装备文件中的绑定ip

    bind-address            = 0.0.0.0
    

    发动mysql,并登录

    sudo /etc/init.d/mysql start
    sudo mysql -u root
    

    新建长途拜访的用户

    create user chuan@'%' identified by '123456';
    grant all privileges on *.* to chuan@'%' with grant option;
    FLUSH PRIVILEGES;
    

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)
2. 装备hive

修正hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>chuan</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>

在mysql中创建hive数据库

create database hive

下载mysql驱动包,放到 hive-3.1.3/lib 目录下

初始化metastore

schematool -dbType mysql -initSchema

因为hadoop和hive的guava版本不兼容,因而替换guava,此处可以直接在文件夹中操作,这里是为了方便演示

cp hadoop-3.2.4/share/hadoop/common/lib/guava-27.0-jre.jar hive-3.1.3/lib
rm hive-3.1.3/lib/guava-19.0.jar
  1. hive 的发动和封闭

    nohup hive --service metastore &
    nohup hive --service hiveserver2 &
    kill -9 $(jps -lm | grep -i 'metastore.HiveMetaStore' | awk '{print $1}')
    kill -9 $(jps -lm | grep -i 'HiveServer2' | awk '{print $1}')
    
  2. 衔接测试

    beeline -u jdbc:hive2://master:10000 -n hadoop
    

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

hbase 2.4 装置

  1. 修正 hbase-env.sh

    export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341
    export HADOOP_HOME=/home/hadoop/big-data-tools/hadoop-3.2.4
    export HBASE_MANAGES_ZK=false
    
  2. 修正 hbase-site.xml

    <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
    </property>
    <property>
      <name>hbase.rootdir</name>
      <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>master,work-1,work-2</value>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/data/zookeeper</value>
    </property>
    <property>
      <name>hbase.unsafe.stream.capability.enforce</name>
       <value>false</value>
    </property>
    <property>
       <name>hbase.tmp.dir</name>
       <value>/home/hadoop/data/hbase</value>
    </property>
    
  3. 修正regionservers

    master
    work-1
    work-2
    
  4. 装置zookeeper

    修正装备文件

    cp conf/zoo_sample.cfg conf/zoo.cfg
    
    dataDir=/home/hadoop/data/zookeeper
    server.1=master:2888:3888
    server.2=work-1:2888:3888
    server.3=work-2:2888:3888
    

    在数据文件夹下创建myid

    mkdir -p /home/hadoop/data/zookeeper/
    vi /home/hadoop/data/zookeeper/myid
    

    在myid中增加与server对应的编号:master 为1, work-1 为2, work-2 为3

    警告

    myid的值肯定不能错,有必要一一对应

    发动zookeeper

    zkServer.sh start
    
  5. 发动、封闭hbase、进入hbase

start-hbase.sh
stop-hbase.sh
hbase shell
create 'test','c1','c2'

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

spark 3.2 装置

修正spark-env.sh

export JAVA_HOME=/home/hadoop/big-data-tools/jdk1.8.0_341
export HADOOP_CONF_DIR=/home/hadoop/big-data-tools/hadoop-3.2.4/etc/hadoop
export YARN_CONF_DIR=/home/hadoop/big-data-tools/hadoop-3.2.4/etc/hadoop
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=4g
export SPARK_MASTER_WEBUI_PORT=8090

修正workers

master
work-1
work-2

衔接web检查spark 服务

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

flink 1.14 装置

修正 workers

master
work-1
work-2

修正masters

master:8070

修正 flink-conf.yaml

rest.port: 8070
jobmanager.rpc.address: master

运行界面

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

每个节点的运行成果

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

大数据完全分布式集群安装搭建hadoop、hbase、hive、spark、flink(二)

hadoop 、hbase 、spark、flink网络监控界面

这一部分很重要,尤其是spark和flink, 后面会介绍一些spark网络监控二次开发的相关教程

hadoop NameNode http://master:9870/

hadoop ResourceManager http://master:8088/

hbase http://master:16010/

spark http://master:8090/

flink http://master:8070/

参阅文献

  1. hadoop.apache.org/docs/r3.2.4…
  2. hbase.apache.org/book.html#s…
  3. nightlies.apache.org/flink/flink…
  4. spark.apache.org/docs/latest…
  5. cwiki.apache.org/confluence/…
  6. zeppelin.apache.org/docs/0.10.1…
  7. zeppelin.apache.org/docs/0.10.1…
  8. zeppelin.apache.org/docs/0.10.1…
  9. zeppelin.apache.org/docs/0.10.1…
  10. www.jianshu.com/p/f45085e04…
  11. www.codeleading.com/article/354…
  12. zhuanlan.zhihu.com/p/59805371
  13. developer.aliyun.com/article/625…
  14. blog.csdn.net/zheng911209…