Atlas 元数据管理
1.Atlas入门
1.1概述
元数据原理和治理功能,用以构建数据资产的目录。对这个资产进行分类和管理,形成数据字典。
提供围绕数据资产的协作功能。
表和表之间的血缘依赖
字段和字段之间的血缘依赖
1.2架构图
导入和导出:

-  
是针对元数据的导入和导出的
 -  
数据的导入和导出需要借助kafka
 
Metadata Source:元数据
下面以hive为例导入我们的数据。
Zookerper
hive
hadoop
kafka
atlas
安装部署是比较复杂的!
数据分类
Type System

图引擎
表和表的血缘
字段和字段的血缘
Hbase,底层是KV结构的。直接用Hbase存储是不行的。
图结构,多个点多个线。图数据库,底层用的是Graph Engine
solr和es是差不多的,可以搜索数据的,可以查询元数据。
可以对接别的系统

 
1.3Atlas2.0特性
使用hadoop3.0
Hive3.0 3.1
Hbase2.0
Solr7.5
Kafka2.0
1.4安装规划
1)Atlas 官网地址:Apache Atlas – Data Governance and Metadata framework for Hadoop
2)文档查看地址:Apache Atlas – Data Governance and Metadata framework for Hadoop
3)下载地址:Apache Downloads
1.5安装环境
自带Hbase和Solr,可以使用外部的Hbas和Solr。
Hadoop的组件:
-  
HDFS
 -  
Yarn
 -  
HistoryServer
 
Zookeeper:存储元数据的
-  
Kafka
 -  
HBase
 -  
Solr
 
Hive:给Atlas提供数据的
MySQL:提供Hive的数据存储的
Atlas:以上全部的启动完成之后才能启动Altlas
1.6复制四个虚拟机
修改主机ip
vim  /etc/sysconfig/network-scripts/ifcfg-ens33
改主机名
vim /etc/hostname
reboot重启 
连接xshell
修改Windows的文件
192.168.6.100   hadoop100
192.168.6.101   hadoop101
192.168.6.102   hadoop102
192.168.6.103   hadoop103
192.168.6.104   hadoop104
192.168.6.105   hadoop105
192.168.6.106   hadoop106
192.168.6.107   hadoop107
192.168.6.108   hadoop108
192.168.6.109   hadoop109
192.168.6.200   gitlab-server 
将下面的文件全部导入到虚拟机中。

全部传递到/opt/software文件夹下。
当出现连接不上的情况就进行重启网络管理器
[root@node01 ~]# systemctl stop NetworkManager
[root@node01 ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@node01 ~]# service network restart 
2.环境安装
2.1安装jdk
102中安装jdk
删除系统自带的Java
rpm -qa |grep -i java | xargs -n1 sudo rpm -e --nodeps
解压jdk
tar -zxvf jdk-8u212-linux-x64.tar.gz  -C /opt/module/
配置环境变量
 cd /etc/profile.d/
 
创建一个自己的环境变量
sudo vim my_env.sh
输入下面的环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
使我们的环境变量生效
> 会自动地遍历profile下的sh为结尾的文件
source /etc/profile
 
查看Java的环境变量
2.2配置免密登录
.ssh目录下执行下面的语句
ssh-keygen -t rsa
回车三次
 
创建脚本
chmod  776 xsync
脚本内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4. 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
执行
xsync bin 
设置免费登录
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
解决root下无法识别xsync命令
 sudo cp /home/atguigu/bin/xsync /usr/bin/
 
 
 
2.3hadoop的安装
解压
tar -zxvf hadoop-3.1.3.tar.gz  -C /opt/module/
去解压后的目录
cd /opt/module/hadoop-3.1.3
修改配置文件
core-site.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<!—相当于hadoop的内部通讯地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
        <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    
            <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
    
</configuration>
 
配置vim hdfs-site.xml
vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
 
配置 vim yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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_MAPRED_HOME</value>
    </property>
</configuration>
 
设置vim mapred-site.xml
<configuration>
        <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
~                    
编辑works文件输入下面的内容
hadoop102
hadoop103
hadoop104
          
配置历史服务器的地址
 vim mapred-site.xml
 
 <!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
 
配置日志得收集
 vim yarn-site.xml
 <!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
 
进行分发
 xsync hadoop-3.1.3/
 
此时就完成了所有服务器中hadoop得安装了
编写一下环境变量
 vim /etc/profile.d/my_env.sh
设置环境变量
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin                                      
分发环境变量
 sudo xsync  /etc/profile.d/my_env.sh
 环境变量生效
source /etc/profile 
设置一个完整得启动得脚本
myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="
        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="
        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac
 
启动三个机器的hadoop
myhadoop.sh start
 

创建一个脚本查看三个脚本的内容
jpsall文件创建
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps $@ | grep -v Jps
done
 
 
rm -rf /opt/module/hadoop-3.1.3/logs/ /opt/module/hadoop-3.1.3/data/ 
格式化
hdfs namenode -format 
下面是启动完成的

2.4安装MySQL
rpm -qa |grep mariadb
sudo rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
common安装
lib
额外的lib
client
server
初始化
mysqld --initialize --user=mysql
查看临时密码
cat /var/log/mysqld.log
systemctl start mysqld
mysql -uroot -p
show databases;
 update user set host='%' where user='root';
 
2.5安装Hive
解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz  -C /opt/module/
改个名字
mv apache-hive-3.1.2-bin/ hive
 
修改环境变量
 sudo vim /etc/profile.d/my_env.sh
 
 export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
                             
 
 环境变量生效
source /etc/profile
 
Hive的元数据配置
将MySQL的连接的驱动传递过去
 cp mysql-connector-java-5.1.37.jar /opt/module/hive/lib/
 
修改conf下的配置
vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseIfNotExist=true</value
>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
<description>password to use against metastore database</description>
</property>
</configuration> 
修改启动文件
mv hive-env.sh.template hive-env.sh
放开下面的启动参数
export HADOOP_HEAPSIZE=1024
 
 
修改存储日志的地方‘
mv hive-log4j2.properties.template  hive-log4j2.properties
设置一下的参数
property.hive.log.dir = /opt/module/hive/logs 
初始化hive服务
 schematool -initSchema -dbType mysql -verbose 
次数MySQL数据库就创建成功了。此时MySQL表就创建成功了。
登录hive客户端
CREATE TABLE test_user (
  id STRING COMMENT '编号',
  name STRING COMMENT '姓名',
  province_id STRING COMMENT '省份名称'
) COMMENT '用户表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
 
yarn中可以产看到运行的进度


此时在hdfs上有对应的数据

 
如何解决中文注释的乱码问题

将列改为中文

修改配置文件
<value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true;characterEncoding=UTF-8</value
 
2.6Zookeeper部署
 tar -zxvf  apache-zookeeper-3.5.7-bin.tar.gz  -C /opt/module/
 
 修改名字
 mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
在/opt/module/zookeeper-3.5.7/zkData下的myid文件下设置对应的编号
分别为2 3 4
修改zookeeper的配置文件
mv zoo_sample.cfg  zoo.cfg
数据保存的地方
dataDir=/opt/module/zookeeper-3.5.7/zkData
#下面为集群的模式
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
分发一下数据
xsync zookeeper-3.5.7/
 
zookeeper的bin下创建zk.sh脚本
#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        for i in hadoop102 hadoop103 hadoop104
    do
        echo "=====================  $i  ======================="
        ssh $i "source /etc/profile && /opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
    done
;;
"stop")
        for i in hadoop102 hadoop103 hadoop104
    do
        echo "=====================  $i  ======================="
        ssh $i "source /etc/profile && /opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
    done
;;
"status")
        for i in hadoop102 hadoop103 hadoop104
    do
        echo "=====================  $i  ======================="
        ssh $i "source /etc/profile && /opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
    done
;;
*)
    echo "Input Args Error..."
;;
esac 
安装成功的状态 
2.7Kafka安装
解压
tar -zxvf kafka_2.11-2.4.1.tgz  -C /opt/module/
改个名字
mv kafka_2.11-2.4.1/ kafka
创建logs目录
mkdir logs
修改kafka的配置文件
broker.id=0
delete.topic.enable=true
log.dirs=/opt/module/kafka/data
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
 
 
修改环境变量
 sudo vim /etc/profile.d/my_env.sh
 
 export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
                             
 
 环境变量生效
source /etc/profile
 
分发
xsync kafka/  
修改server.properties中的配置,分别设置不同的唯一的标识符
分发环境变量
sudo xsync /etc/profile.d/my_env.sh 
设置环境变量生效
source /etc/profile 
创建kafka启动的脚本
 cd ~/bin
chmod 777 ./kf.sh
 
#!/bin/bash
case $1 in
"start"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties "
    done
};;
"stop"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"
    done
};;
esac
 
设置这个文件的执行的权限
chmod 777  kf.sh
 
启动所有的kafka服务
kf.sh start
 
必须先启动zookeeper才能启动kafka

查看kafka的进程状态

测试一下kafka的进行
创建kafka的topic
kafka-topics.sh --zookeeper hadoop102:2181/kafka \ --create --replication-factor 3 --partitions 1 --topic first
查看所有的
kafka-topics.sh --zookeeper hadoop102:2181/kafka --list 
查看当前服务器中所有的topic
[atguigu@hadoop102 bin]$ kafka-topics.sh --zookeeper hadoop102:2181/kafka --list
[atguigu@hadoop102 bin]$ 
 
创建topic
kafka-topics.sh --zookeeper hadoop102:2181/kafka --create --topic first --partitions 3 --replication-factor 3
实例:
[atguigu@hadoop102 bin]$ kafka-topics.sh --zookeeper hadoop102:2181/kafka --create --topic first --partitions 3 --replication-factor 3
Created topic first.
 
删除topic
kafka-topics.sh --zookeeper hadoop102:2181/kafka --delete --topic first 
发送消息
kafka-console-producer.sh  --broker-list  hadoop102:9092  --topic first
实例:
[atguigu@hadoop104 config]$ kafka-console-producer.sh  --broker-list  hadoop102:9092  --topic first
>1
>2
>3
>4
>5
 
消费消息
kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
实例:
[atguigu@hadoop103 kafka]$ kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
1
2
3
4
5
 

2.8Hbase的安装部署
zookeeper必须正常部署。
必须先启动hadoop。依赖于hdfs。
解压
tar -zxvf hbase-2.0.5-bin.tar.gz  -C /opt/module/
重命名
 mv hbase-2.0.5/ hbase
 
设置环境变量
 sudo vim /etc/profile.d/my_env.sh
 
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
                             
 
 环境变量生效
source /etc/profile
 
修改配置文件
cd conf
设置外部的zookeeper
sudo vim hbase-env.sh
export HBASE_MANAGES_ZK=false
 
修改hbase-site.xml,指定zk的位置
sudo vim hbase-site.xml
 <configuration>
 <property>
 	<name>hbase.rootdir</name>
 	<value>hdfs://hadoop102:8020/HBase</value>
 </property>
 
 <property>  
 	<name>hbase.cluster.distributed</name>
 	<value>true</value>
 </property>
 
 <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
 <property>
 	<name>hbase.master.port</name>
 	<value>16000</value>
 </property>
<property>  
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop102,hadoop103,hadoop104</value>
</property>
<property>   
	<name>hbase.zookeeper.property.dataDir</name>
	<value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration 
下面是我配置的配置文件的内容
<configuration>
 <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop102:8020/HBase</value>
 </property>
 
 <property>  
        <name>hbase.cluster.distributed</name>
        <value>true</value>
 </property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop102,hadoop103,hadoop104</value>
</property>
</configuration>                     
修改regionservers
sudo vim regionservers
输入下面的内容
hadoop102
hadoop103
hadoop104
 
分发hbase
xsync hbase/
 
分发环境变量
sudo xsync /etc/profile.d/my_env.sh 
设置环境变量生效
source /etc/profile 
启动hbase
启动hbase
start-hbase.sh
停止hbase
stop-hbase.sh 

访问Master: hadoop102可以查看集群的信息

2.9Solr
需要一个索引数据库,并没有采用es。因为atlas底层采用的是solr。
三个主机分别都添加用户solr
sudo useradd solr
设置密码为solr
echo solr | sudo passwd --stdin solr
 

解压
 tar -zxvf solr-7.7.3.tgz  -C /opt/module/
 
修改名称为solr
mv solr-7.7.3/ solr
将当前文件夹的全部的权限都给solr
-R 表示递归执行
 sudo chown -R solr:solr /opt/module/solr
 sudo chown -R atguigu:atguigu /opt/module/solr
/opt/module/solr/bin/solr start
 

以管理员的身份去修改solr下的配置文件
sudo vim solr.in.sh 
修改下面的内容
ZK_HOST="hadoop102:2181,hadoop103:2181,hadoop104:2181"
 
分发
 xsync solr/ 
处于安全的考虑不推荐采用root的用户进行启动,需要采用自己创建的用户进行启动,solr。

启动
sudo chmod -R 777 /opt/module/solr/
sudo -i -u solr /opt/module/solr/bin/solr start
 
假设出现打开文件的限制得话运行下面得内容
打开 /etc/security/limits.conf 文件:
sudo vi /etc/security/limits.conf
在文件末尾添加以下行来设置软限制和硬限制:
* soft nofile 65536
* hard nofile 65536 
下面是启动的集群的可视化配置的界面
访问下面的地址可以查看solr的管理的界面http://hadoop102:8983/solr/#/~cloud?view=nodes
 
2.10atlas安装
安装不复杂,配置是复杂得
解压
 tar -zxvf apache-atlas-2.1.0-bin.tar.gz  -C /opt/module/
改个名字
mv apache-atlas-2.1.0/ atlas
 
配置Hbase
-  
修改内容atlas-application.properties
 
atlas.graph.storage.hostname=hadoop102:8181,hadoop103:8181,hadoop104:8181
 
- 修改atlas-env.sh中得内容
 
#hbase连接地址
export HBASE_CONF=/opt/module/hbase/conf
 
atlas集成solr
-  
修改内容atlas-application.properties
 
atlas.graph.index.search.solr.zookeeper-url=hadoop102:8181,hadoop103:8181,hadoop104:8181 
- 修改atlas-env.sh中得内容
 
#hbase连接地址
export HBASE_CONF=/opt/module/hbase/conf
 
3.Atlas安装和配置
3.1集成Hbase
我们目前安装的是基本的server的包。
安装不复杂,配置是复杂得
解压
 tar -zxvf apache-atlas-2.1.0-bin.tar.gz  -C /opt/module/
改个名字
mv apache-atlas-2.1.0/ atlas
 
配置Hbase
-  
conf下修改内容atlas-application.properties
 
atlas.graph.storage.hostname=hadoop102:2181,hadoop103:2181,hadoop104:2181 
- 修改conf下的atlas-env.sh中得内容
 
#hbase连接地址
export HBASE_CONF_DIR=/opt/module/hbase/conf
 
3.2集成solr
atlas集成solr
-  
修改conf下的atlas-application.properties
 
atlas.graph.index.search.solr.zookeeper-url=hadoop102:2181,hadoop103:2181,hadoop104:2181 
在solr中创建三个collection
/opt/module/solr/bin/solr create -c vertex_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2
/opt/module/solr/bin/solr create -c edge_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2
/opt/module/solr/bin/solr create -c fulltext_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2
 
 
下面是创建collection的效果图

通过前端的界面查看创建的collection
-  
此时atlas中的元数据的信息就可以存储到solr中去了
 

3.3集成Kafka
修改atlas-application.properties配置文件中的内容
下面是改好的内容。
#########  Notification Configs  #########
atlas.notification.embedded=false
atlas.kafka.data=/opt/module/kafka/data
atlas.kafka.zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
atlas.kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092 
3.4atlas Server配置
在conf下的atlas-application.properties配置文件中进行下面的修改
#########  Server Properties  #########
atlas.rest.address=http://hadoop102:21000
atlas.server.run.setup.on.start=false
atlas.audit.hbase.zookeeper.quorum=hadoop102:2181,hadoop103:2181,hadoop104:2181 
 
放开下面的注释
conf下的atlas-log4j.xml
    <!-- Uncomment the following for perf logs -->
    <appender name="perf_appender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${atlas.log.dir}/atlas_perf.log" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d|%t|%m%n" />
        </layout>
    </appender>
    <logger name="org.apache.atlas.perf" additivity="false">
        <level value="debug" />
        <appender-ref ref="perf_appender" />
    </logger>
 
3.5集成Hive
atlas可以实时的获取atlas中的元数据。
在conf下的atlas-application.properties最后面加入下面的内容。
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
atlas.cluster.name=primary 
下面去Hive的conf下的hive-site.xml中加入下面的参数。配置hive hook。
<property>
    <name>hive.exec.post.hooks</name>
    <value>org.apache.atlas.hive.hook.HiveHook</value>
</property> 
安装Hive Hook
安装文件在atlas中的源程序中。
tar -zxvf apache-atlas-2.1.0-hive-hook.tar.gz  

现在需要将上面的这两个文件夹复制到atlas的目录下。
cp -r ./* /opt/module/atlas/ 
[atguigu@hadoop102 conf]$ sudo vim hive-env.sh
添加下面的内容
export HIVE_AUX_JARS_PATH=/opt/module/atlas/hook/hive
拷贝一份配置文件到hive的配置文件目录下
sudo cp atlas-application.properties /opt/module/hive/conf/
 
3.6Atlas的启动和登录
hadoop启动
zookeeper启动
kafka启动

在atlas的bin目录下执行下面的命令
启动命令
./atlas_start.py 
关闭命令
./atlas_stop.py  
启动的时间是比较长的。
错误日志的地方

 
atlas管理界面的地址http://hadoop102:21000/
账户:admin
密码:admin
jpsall如果出现一个Atlas的进程的话就是启动成功了。
UI界面加载的时候时候还需要加载一段的时间。
tail -f application.log  

登录上之后
 
可以进行元数据的管理和查询以及血缘关系的查询。
3.7atlas的作用
-  
同步Hive中的元数据。并构建元数据实体之间的关联关系。
 -  
对所存储的元数据建立索引,最终用户提供数据血缘查看及元数据检索等功能。
 
Atlas在安装的时候需要进行一次元数据的全量的导入。后续会使用HIve Hook进行同步Hive中的元数据。
全量导入只需要一次。
3.8元数据的导入
进入下面的目录
/opt/module/atlas/hook-bin
输入下面的命令导入
./import-hive.sh
 

查看导入的表。
 
 
3.9查看血缘关系
订单信息表
CREATE TABLE dwd_order_info (
 `id` STRING COMMENT '订单号',
 `final_amount` DECIMAL(16,2) COMMENT '订单最终金额',
 `order_status` STRING COMMENT '订单状态',
 `user_id` STRING COMMENT '用户 id',
 `payment_way` STRING COMMENT '支付方式',
 `delivery_address` STRING COMMENT '送货地址',
 `out_trade_no` STRING COMMENT '支付流水号',
 `create_time` STRING COMMENT '创建时间',
 `operate_time` STRING COMMENT '操作时间',
 `expire_time` STRING COMMENT '过期时间',
 `tracking_no` STRING COMMENT '物流单编号',
 `province_id` STRING COMMENT '省份 ID',
 `activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',
 `coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',
 `original_amount` DECIMAL(16,2) COMMENT '订单原价金额',
 `feight_fee` DECIMAL(16,2) COMMENT '运费',
 `feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免'
) COMMENT '订单表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
 
地区维度表
CREATE TABLE dim_base_province (
 `id` STRING COMMENT '编号',
 `name` STRING COMMENT '省份名称',
 `region_id` STRING COMMENT '地区 ID',
 `area_code` STRING COMMENT '地区编码',
 `iso_code` STRING COMMENT 'ISO-3166 编码,供可视化使用',
 `iso_3166_2` STRING COMMENT 'IOS-3166-2 编码,供可视化使用'
) COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
 
插入之后

 
将资料里面提前准备好的数据 order_info.txt 和 base_province.txt 上传到两张 hive 表的 hdfs 路径下
在下面的目录中上传我们的数据

 
需求指标
1)根据订单事实表和地区维度表,求出每个省份的订单次数和订单金额 2)建表语句
CREATE TABLE `ads_order_by_province` (
 `dt` STRING COMMENT '统计日期',
 `province_id` STRING COMMENT '省份 id',
 `province_name` STRING COMMENT '省份名称',
 `area_code` STRING COMMENT '地区编码',
 `iso_code` STRING COMMENT '国际标准地区编码',
 `iso_code_3166_2` STRING COMMENT '国际标准地区编码',
 `order_count` BIGINT COMMENT '订单数',
 `order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
 
数据装载
insert into table ads_order_by_province
select
 '2021-08-30' dt,
 bp.id,
 bp.name,
 bp.area_code,
 bp.iso_code,
 bp.iso_3166_2,
 count(*) order_count,
 sum(oi.final_amount) order_amount
from dwd_order_info oi
left join dim_base_province bp
on oi.province_id=bp.id
group by bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2;
 
下面是血缘关系图。

查看字段下单量的血缘族谱。

下面是字段的血缘关系。

4.网址
4.1Atlas
http://hadoop102:21000/
账号:admin
密:admin
 
4.2Solr
http://hadoop102:8983/
 
 
4.4Hadoop
http://hadoop102:9870/
 
4.5Yarn
http://hadoop103:8088/
 
5.启动命令
启动Hadoop::只在102上执行
myhadoop.sh start
MySQL
默认是启动的
hive::只在102上执行
执行hive就可以
zookeeper启动:只在102上执行
cd /opt/module/zookeeper-3.5.7/bin
./zk.sh start
kafka启动:只在102上执行
 cd ~/bin
kf.sh start
启动hbase:只在102上执行
cd /opt/module/hbase/bin
启动
start-hbase.sh
停止
stop-hbase.sh
solr三个机器上分别执行
/opt/module/solr/bin/solr start
 



















