一、PB级别企业电商离线仓库:部署规划


IP地址

主机名

第一台机器

192.168.1.121

Hadoop01

第二台机器

192.168.1.122

Hadoop02

第三台机器

192.168.1.123

Hadoop03

第四台机器

192.168.1.124

Hadoop04

第五台机器

192.168.1.125

Hadoop05

### --- 软件选型

~~~ 数据采集:DataX、Flume、Sqoop、Logstash、Kafka
~~~ 数据存储:HDFS、HBase
~~~ 数据计算:Hive、MapReduce、Tez、Spark、Flink
~~~ 调度系统:Airflow、azkaban、Oozie
~~~ 元数据管理:Atlas
~~~ 数据质量管理:Griffin
~~~ 即席查询:Impala、Kylin、ClickHouse、Presto、Druid
~~~ 其他:MySQL
~~~ 框架、软件尽量不要选择最新的版本,选择半年前左右稳定的版本。


hadoop1

hadoop2

hadoop3

hadoop4

hadoop5

NameNode

         √





SecondaryNameNode


        √




DataNode

        √

        √

        √

        √

        √

ResourceManager

        √





DataManager

        √

        √

        √

        √

        √

historyserver

        √





Hive

        √

        √



        √

HiveServer2





        √

Flume


        √




DataX


        √




Airflow


        √




Atlas


        √




Griffin


        √




Impala

        √

        √

        √

        √

        √

MySQL


        √





二、HDFS和YARN集群部署规划

框架

HDFS

YARN

Hadoop01

NameNode

DataNode

Jobhistory

ResourceManager

DataManager

Hadoop02

SecondaryNameNode

DataNode

DataManager

Hadoop03

DataNode

DataManager

Hadoop04

DataNode

DataManager

Hadoop05

DataNode

DataManager

### --- 启动/停止HDFS服务

[root@hadoop01 ~]# start-dfs.sh
[root@hadoop01 ~]# stop-dfs.sh
### --- 启动/停止YARN服务

[root@hadoop01 ~]# start-yarn.sh
[root@hadoop01 ~]# stop-yarn.sh
### --- 访问地址

~~~ # web端查看Hdfs界面
~~~ http://hadoop01:50070/dfshealth.html#tab-overview
~~~ # HDFS访问地址:
~~~ http://hadoop01:50070/
~~~ # 查看详细日志:
~~~ http://hadoop01:8088/cluster

三、启动HDFS的jobhistory服务

### --- 启动jobhistory服务

[root@hadoop01 ~]# /opt/yanqi/servers/hadoop-2.9.2/sbin/mr-jobhistory-daemon.sh start historyserver
### --- 访问地址

~~~ # 插件历史日志服务地址JobHistory:
~~~ http://hadoop01:19888/jobhistory

一、Hive安装配置:单机模式:部署规划

软件

Hadoop01

Hadoop02

Hadoop03

Hadoop04

Hadoop05

Hadoop

mysql





hive



HiveServer2





### --- hive启动

~~~ # mysql部署节点:Hadoop05
[root@hadoop05 ~]# systemctl start mysqld
~~~     # Hive单机部署节点:Hadoop01
~~~ # 启动hive服务之前,请先启动hdfs、yarn的服务

[root@hadoop01 ~]# start-dfs.sh
[root@hadoop01 ~]# start-yarn.sh
[root@hadoop01 ~]# hive
hive> show functions;

二、Hive远程模式:metastore模式:部署规划

节点

metastore

client

Hadoop01


Hadoop02


Hadoop05


### --- 启动hive-metastore服务

~~~ # 启动hdfs和yarn
[root@hadoop01 ~]# start-dfs.sh
[root@hadoop01 ~]# start-yarn.sh
~~~     # 分别在Hadoop01和Hadoop05上执行以下命令,查看连接情况
~~~ # 启动 metastore 服务

[root@hadoop01 ~]# nohup hive --service metastore &
[root@hadoop01 ~]# lsof -i:9083
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 10459 root 513u IPv4 93320 0t0 TCP *:emc-pp-mgmtsvc (LISTEN)
~~~     # 在client.Hadoop02上写入数据
[root@hadoop02 ~]# hive

~~~ # 查看hadoop01和hadoop03查看进程的变化
[root@hadoop05 ~]# lsof -i:9083
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 15624 root 513u IPv4 122919 0t0 TCP *:emc-pp-mgmtsvc (LISTEN)
java 15624 root 514u IPv4 123038 0t0 TCP hadoop05:emc-pp-mgmtsvc->hadoop02:56232 (ESTABLISHED)

三、HiveServer2配置:HiveServer2配置配置规划:

节点

HiveServer2

client(beeline)

Hadoop02


Hadoop05


四、配置并启动HiveServer2服务

### --- 启动hadoop05上的 HiveServer2 服务

~~~ # 启动 hiveserver2 服务
[root@hadoop05 ~]# nohup hiveserver2 &
~~~ # 检查 hiveserver2 端口
[root@hadoop05 ~]# lsof -i:10000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 15888 root 521u IPv4 128333 0t0 TCP *:ndmp (LISTEN)
~~~ # 从2.0开始,HiveServer2提供了WebUI

五、HCatalog

### --- HCatalog

~~~ # 进入 hcat 所在目录。$HIVE_HOME/hcatalog/bin
[root@hadoop02 ~]# cd $HIVE_HOME/hcatalog/bin
~~~ # 执行命令,创建表
[root@hadoop02 bin]# ./hcat -e "create table default.test1(id string, name string, age int)"
~~~ # 长命令可写入文件,使用 -f 选项执行
[root@hadoop02 bin]# ./hcat -f createtable.txt
~~~ # 查看元数据
[root@hadoop02 bin]# ./hcat -e "use mydb; show tables"
~~~ # 查看表结构
[root@hadoop02 bin]# ./hcat -e "desc mydb.emp"
~~~ # 删除表
[root@hadoop02 bin]# ./hcat -e "drop table default.test1"

六、访问地址:

### --- 访问地址:

~~~ # HiveServer2访问地址:
~~~ 通过浏览器检查hiveserver2的启动情况http://Hadoop05:10002/

一、Flume部署配置

### --- Flume部署节点:Hadoop02

~~~ # 检查 8888 端口是否被占用。如果该端口被占用,可以选择使用其他端口完成任务
[root@hadoop02 ~]# lsof -i:8888
~~~ # 使用 telnet 向本机的 8888 端口发送消息
[root@hadoop02 ~]# telnet hadoop02 8888
~~~ # 使用Flume监听页面查看数据接收情况
$FLUME_HOME/bin/flume-ng agent --name a1 \
--conf-file $FLUME_HOME/conf/flume-netcat-logger.conf \
-Dflume.root.logger=INFO,console

### --- DATAX启动
~~~ DATAX启动以脚本为主

### --- Tez启动
~~~ Tez启动以脚本为主

一、Airflow启动

### --- 启动Python3

~~~ # 进入python3的运行环境
cd /opt/yanqi/servers/python3.6/bin/
./virtualenv env
. env/bin/activate

~~~ # 退出python3虚拟环境命令
(env) [root@hadoop02 ~]# deactivate
### --- 启动airflow服务

(env) [root@hadoop02 ~]# airflow scheduler -D

(env) [root@hadoop02 ~]# airflow webserver -D
### --- 停止airflow服务

~~~ # 停止airflow服务
~~~ 关闭 airflow webserver 对应的服务
(env) [root@hadoop02 ~]# ps -ef | grep 'airflow-webserver' | grep -v 'grep' | awk '{print $2}' | xargs -i kill -9 {}
~~~ 关闭 airflow scheduler 对应的服务
(env) [root@hadoop02 ~]# ps -ef | grep 'airflow' | grep 'scheduler' | awk '{print $2}' | xargs -i kill -9 {}
### --- 删除对应的pid文件
~~~ 正常停止的话,这两个文件会关闭,
~~~ 若是通过kill掉的,需要把这两个pid文件删除掉

(env) [root@hadoop02 ~]# cd $AIRFLOW_HOME
(env) [root@hadoop02 airflow]# rm -rf *.pid

二、访问airflow.UI界面

### --- 访问airflow.UI界面

~~~ # Chrome访问:安装完成,
~~~ 可以使用浏览器登录 hadoop02:8080;输入用户名、口令:airflow /airflow123

|NO.R.00001|——————————|Navigation|————|PB级企业电商离线数仓|—_hive

三、运行airflow服务案例

### --- 执行helloworld.py案例文件

~~~ # 执行命令检查脚本是否有错误。如果命令行没有报错,就表示没问题
(env) [root@hadoop02 ~]# python $AIRFLOW_HOME/dags/helloworld.py
~~~     # 查看生效的 dags

(env) [root@hadoop02 ~]# airflow list_dags -sd $AIRFLOW_HOME/dags
~~~     # 查看指定dag中的task

(env) [root@hadoop02 ~]# airflow list_tasks HelloWorldDag
~~~     # 测试dag中的task

(env) [root@hadoop02 ~]# airflow test HelloWorldDag MyTask2 20211010

一、Atlas服务

### --- 启动atlas:Hadoop02

~~~ # 启动服务(第一次启动服务的时间比较长)
[root@hadoop02 ~]# cd $ATLAS_HOME/bin
[root@hadoop02 bin]# ./atlas_start.py # 启动服务
~~~ 输出参数
starting atlas on port 21000
..............................................................................................................................................................................................................................................................................................................
Apache Atlas Server started!!!
[root@hadoop02 bin]# ./atlas_stop.py        # 关闭服务
[root@hadoop02 bin]# ./solr status # 查看服务状态
~~~     # 检查后台进程 (1个atlas、2个HBase、1个solr后台进程)

[root@hadoop02 ~]# ps -ef | grep atlas
~~~ 启动的进程
/opt/yanqi/servers/atlas-1.2.0/server/webapp/atlas
/opt/yanqi/servers/atlas-1.2.0/hbase/bin/hbase-daemon.sh
org.apache.hadoop.hbase.master.HMaster
/opt/yanqi/servers/atlas-1.2.0/solr/server/solr
### --- atlas.UI管理

~~~ http://hadoop02:21000/login.jsp
~~~ 用户名 / 口令:admin / admin
### --- 账户密码管理

~~~ # 账号的信息存储在文件 conf/users-credentials.properties 中。
[root@hadoop02 ~]# cd /opt/yanqi/servers/atlas-1.2.0/
[root@hadoop02 atlas-1.2.0]# vim conf/users-credentials.properties
~~~ # 用户名口令参数
#username=group::sha256-password
admin=ADMIN::8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
rangertagsync=RANGER_TAG_SYNC::e3f67240f5117d1753c940dae9eea772d36ed5fe9bd9c94a300e40413f1afb9d
~~~     # 其中 Password 通过如下方式产生sha256sum 摘要信息:

[root@hadoop02 ~]# echo -n "admin" | sha256sum
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 -

[root@hadoop02 ~]# echo -n "rangertagsync" | sha256sum
e3f67240f5117d1753c940dae9eea772d36ed5fe9bd9c94a300e40413f1afb9d -

一、Griffin服务

### --- 启动spark

~~~ # 进入spark-shell
[root@hadoop02 ~]# spark-shell
~~~ 输出参数
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.1
/_/
~~~     # 查看启动的进程

[root@hadoop02 ~]# jps
9422 SparkSubmit
~~~     # 打开该文件读取内容

scala> val lines = sc.textFile("/wcinput/wc.txt")
scala> lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect()
~~~ 输出参数
res1: Array[(String, Int)] = Array((#在文件中输入如下内容,1), (yanqi,3), (mapreduce,3), (yarn,2), (hadoop,2), (hdfs,1))
### --- 启动livy

[root@hadoop02 ~]# cd $LIVY_HOME/
[root@hadoop02 livy-0.5.0]# mkdir logs

[root@hadoop02 livy-0.5.0]# nohup bin/livy-server &
~~~ # OR
[root@hadoop02 ~]# nohup $LIVY_HOME/bin/livy-server &
~~~     # 查看启动的服务

[root@hadoop02 ~]# jps
7897 SparkSubmit
8139 LivyServer
### --- 启动es

~~~ # 到ES安装目录下,执行命令(-d表示后台启动)
~~~ 通过浏览器访问es服务:http://hadoop02:9200/
[root@hadoop02 ~]# su elasticsearch

[elasticsearch@hadoop02 ~]$ cd /opt/yanqi/servers/elasticsearch-5.6.0/
[elasticsearch@hadoop02 elasticsearch-5.6.0]$ bin/elasticsearch -d
### --- 启动Griffin
~~~ 通过Chrome访问Apache Griffin的UI:http://hadoop02:9876 用户名口令:admin / admin

[root@hadoop02 ~]# cd /opt/yanqi/servers/griffin-0.5.0
[root@hadoop02 griffin-0.5.0]# nohup java -jar service-0.5.0.jar>service.out 2>&1 &











Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor