Atlas 元数据管理

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&amp;useSSL=false&amp;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



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/80709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Educational Codeforces Round 62 (Rated for Div. 2) C. Playlist

一开始肯定要排个序&#xff0c;b相同时t大的在前边&#xff0c;不同时b大的在前面。 然后想最多只能选k个的限制&#xff0c;可以这样想&#xff0c;每次用到的b只能用已选到的最小的值&#xff0c;那可以把每个b都枚举一遍&#xff0c;然后每一次选时长最长的&#xff0c;且…

CCF C³ 走进百度:大模型与可持续生态发展

2023年8月10日&#xff0c;由CCF CTO Club发起的第22期C活动在百度北京总部进行&#xff0c;以“AI大语言模型技术与生态发展”主题&#xff0c;50余位企业界、学界专家、研究人员就此进行深入探讨。 CCF C走进百度 本次活动&#xff0c;CCF秘书长唐卫清与百度集团副总裁、深…

DeepSort:基于检测的目标跟踪的经典

本文来自公众号“AI大道理” DeepSORT在SORT的基础上引入了深度学习的特征表示和更强大的目标关联方式&#xff0c;有效地减少了身份切换的数量&#xff0c;缓解了重识别问题。 ​ 1、DeepSORT简介 DeepSORT的主要思想是将目标检测和目标跟踪两个任务相结合。 首先使用目标检…

Docker环境安装elasticsearch和kibana

一、安装elasticsearch 创建es-network&#xff0c;让es、kibana在同一个网段&#xff1a; docker network create --driverbridge --subnet192.168.1.10/24 es-network运行elasticsearch docker run -d \ --name elasticsearch \ # 容器名 --hostname elasticsearch # 主机…

综述:计算机视觉中的图像分割

一、说明 这篇文章是关于图像分割的探索&#xff0c;这是解决计算机视觉问题&#xff08;如对象检测、对象识别、图像编辑、医学图像分析、自动驾驶汽车等&#xff09;的重要步骤之一。让我们从介绍开始。 二、图像分割介绍 图像分割是计算机视觉中的一项基本任务&#xff0c;涉…

Maven基础之仓库、命令、插件机制

文章目录 Maven 仓库中央仓库和本地仓库中央仓库本地仓库 Maven 命令generate 命令compile 命令clean 命令test 命令package 命令install 命令 Maven 插件机制官方插件&#xff1a;Compile 插件Tomcat 7 插件 Maven 仓库 中央仓库和本地仓库 [✎] 简单一点说 中央仓库是一个网…

k8s基本概念、k8s对象、三个命令玩转所有的yaml写法、给vscode安装插件、kubectl和kubelet及自动补全

文章目录 1、K8S基本概念2、kubernetes Objects&#xff08;k8s对象&#xff09;2.1、定义2.2、对象的spec和status2.3、如何写任意资源的yaml&#xff08;以Pod为例&#xff09;2.4、pod的yaml文件2.5、k8s对象yaml的结构2.6、管理k8s对象2.7、对象名称2.8、名称空间2.9、标签…

图神经网络 day2 图的分类

图神经网络基础算法 1 GCN2 GraphSAGE2.1 采样&#xff1a;采样固定长度的邻居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 图网络的分类4.1 递归图神经网络 RGNN4.2 图卷积神经网络GCN4.3 图注意力网络 GAT4.4 图自动编码 GAE4.5 图时空网络 GSTN4.6 图生…

机器人的运动范围

声明 该系列文章仅仅展示个人的解题思路和分析过程&#xff0c;并非一定是优质题解&#xff0c;重要的是通过分析和解决问题能让我们逐渐熟练和成长&#xff0c;从新手到大佬离不开一个磨练的过程&#xff0c;加油&#xff01; 原题链接 机器人的运动范围https://leetcode.c…

机器学习之数据集

目录 1、简介 2、可用数据集 3、scikit-learn数据集API 3.1、小数据集 3.2、大数据集 4、数据集使用 ⭐所属专栏&#xff1a;人工智能 文中提到的代码如有需要可以私信我发给你&#x1f60a; 1、简介 当谈论数据集时&#xff0c;通常是指在机器学习和数据分析中使用的一组…

SSM——用户、角色、权限操作

1. 数据库与表结构 1.1 用户表 1.1.1 用户表信息描述 users 1.1.2 sql语句 CREATE TABLE users( id varchar2(32) default SYS_GUID() PRIMARY KEY, email VARCHAR2(50) UNIQUE NOT NULL, username VARCHAR2(50), PASSWORD VARCHAR2(50), phoneNum VARCHAR2(20), STATUS INT…

PHP之Base64+php://filter绕过、disabled_function绕过

目录 一、Base64php://filter绕过 1.思路分析 2.实践验证 二、disabled_function绕过 一、Base64php://filter绕过 上课讲了这样一道题&#xff0c;一起来看下(以下代码适用于PHP7.x及以上&#xff0c;5的版本会报错) <?php function fun($var): bool{$blacklist …

大文本的全文检索方案附件索引

一、简介 Elasticsearch附件索引是需要插件支持的功能&#xff0c;它允许将文件内容附加到Elasticsearch文档中&#xff0c;并对这些附件内容进行全文检索。本文将带你了解索引附件的原理和使用方法&#xff0c;并通过一个实际示例来说明如何在Elasticsearch中索引和检索文件附…

API开放!将语聚AI智能助手接入到您的自有系统中

概述 语聚AI基于集简云强大的应用软件“连接器”能力&#xff0c;提供了工具延展、知识延展、模型延展和嵌入集成等一系列功能&#xff0c;为用户带来了更加强大和智能的AI新体验。 我们深知&#xff0c;每家企业对于AI应用都有自己独特的需求和应用场景&#xff0c;只有通过开…

STM32开关输入控制220V灯泡亮灭源代码(附带PROTEUSd电路图)

//main.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body************************************************************************…

安全 1自测

常见对称加密算法&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&#xff08;Triple DES&#xff09;&#xff1a;是基于DES&#xff0c;对一块数据用…

LabVIEW调用DLL传递结构体参数

LabVIEW 中调用动态库接口时&#xff0c;如果是值传递的结构体&#xff0c;可以根据字段拆解为多个参数&#xff1b;如果参数为结构体指针&#xff0c;可用簇&#xff08;Cluster&#xff09;来匹配&#xff0c;其内存连续相当于单字节对齐。 1.值传递 接口定义&#xff1a; …

零基础如何学习 Web 安全,如何让普通人快速入门网络安全?

前言 网络安全现在是朝阳行业&#xff0c;缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 【一一帮助安全学习&#xff08;网络安全面试题学习路线视频教程工具&#xff09;一一】 初级的现在有很多的运维人员转网络安全&#xff0c;初级…

22、touchGFX学习Model-View-Presenter设计模式

touchGFX采用MVP架构&#xff0c;如下所示&#xff1a; 本文界面如下所示&#xff1a; 本文将实现两个操作&#xff1a; 1、触摸屏点击开关按键实现打印开关显示信息&#xff0c;模拟开关灯效果 2、板载案按键控制触摸屏LED灯的显示和隐藏 一、触摸屏点击开关按键实现打印开…

Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告

一、Jenkins的配置 1、新增一个自由风格的项目 2、构建->选择Excute Windows batch command&#xff08;因为我是在本地尝试的&#xff0c;因此选择的windows&#xff09; 3、输入步骤&#xff1a; 1. 由于不能拥有相同的jtl文件&#xff0c;因此在每次构建前都需要删除jtl…