atlas_atlassian - CSDN
精华内容
参与话题
  • Apache Atlas元数据管理从入门到实战

    千人学习 2019-04-15 10:16:39
    本课程是大数据全栈工程师实战课程之一,有具有十几年一线技术研发经验的资深数据专家讲师录制,通过一个完整开源框架Apache Atlas元数据管理平台的系统介绍,带领大家体验元数据管理的系统架构、功能设计、模型...
  • atlas-入门使用

    2020-05-06 20:22:07
    Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统集成。 Apache Atlas为组织提供了开放的元数据管理和治理功能,以建立其数据资产的目录,对...

    概述

    Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统集成。

    Apache Atlas为组织提供了开放的元数据管理和治理功能,以建立其数据资产的目录,对这些资产进行分类和治理,并为数据科学家,分析师和数据治理团队提供围绕这些数据资产的协作功能。

    功能

    元数据类型和实例

    各种Hadoop和非Hadoop元数据的预定义类型
    能够为要管理的元数据定义新类型
    类型可以具有原始属性,复杂属性,对象引用;可以继承其他类型
    类型的实例(称为实体)捕获元数据对象详细信息及其关系
    REST API与类型和实例配合使用,可以更轻松地集成

    分类

    动态创建分类的能力-如PII,EXPIRES_ON,DATA_QUALITY,SENSITIVE
    分类可以包含属性-例如EXPIRES_ON分类中的expiry_date属性
    实体可以与多种分类相关联,从而使发现和安全实施更加容易
    通过沿袭传播分类-自动确保分类遵循数据经过各种处理的过程

    血缘

    直观的UI,可查看数据沿各种流程移动的沿袭
    REST API访问和更新沿袭

    搜索/发现

    直观的用户界面,可按类型,分类,属性值或自由文本搜索实体
    丰富的REST API,可按复杂条件进行搜索
    类似于SQL的查询语言以搜索实体-域特定语言(DSL)
    安全和数据屏蔽
    用于元数据访问的细粒度安全性,使您能够控制对实体实例的访问以及诸如添加/更新/删除分类的操作
    与Apache Ranger的集成可基于与Apache Atlas中的实体相关联的分类对数据访问进行授权/数据屏蔽。例如:
    谁可以访问归类为PII,敏感的数据
    客户服务用户只能看到分类为NATIONAL_ID的列的最后4位数字

    各版本特性

    1.0

    特征
    将关系介绍为一流的类型
    支持沿实体关系传播分类(例如沿袭)
    细粒度的元数据安全性,使访问控制达到实体实例级别
    词汇表功能介绍
    V2样式通知的介绍
    介绍用于HBase的Atlas挂钩
    支持Cassandra和Elasticsearch(技术预览)
    更新
    图形存储已从Titan 0.5.4更新为JanusGraph 0.2.0
    DSL重写,用ANTLR代替基于Scala的实现
    通过切换为使用V2样式通知,提高了Atlas Hooks的性能
    Atlas Web UI中的重要更新

    变化
    DSL搜索
    通过DSL重写和简化,某些较早的构造可能无法正常工作。这是以前版本中行为更改的列表。在此处可以找到更多与DSL相关的更改。

    使用字符串属性过滤或缩小结果范围时,该值务必用双引号引起来
    表名=“ Table1”
    表格,其中name =“ Table1”
    不再支持联接查询,例如hive_table,hive_db
    Select子句仅适用于直接实体属性或单个引用(实体)类型。
    表选择名称,所有者
    表选择列
    表格选择名称,所有者,列(无效)
    OrderBy子句只能与单个基本属性一起使用。
    GroupBy子句只能与单个基本属性一起使用。
    表分组名称
    表格groupby列(无效)
    Typename不能有多个别名
    表为t(确定)
    表格为t1,t2(不起作用)
    Has子句仅适用于原始属性。
    表有名字
    表具有列或表具有数据库(不支持)
    Aggregator子句只能与单个基本属性一起使用。
    表选择分钟(名称)
    表选择最大值(名称)
    表选择总和(createTime)
    表格选择最小值(列)(无效)
    表格选择上限(列)(无效)
    表格选择总和(列)(无效)
    不能使用不同的原始属性重复Aggregator子句,最后出现的子句将具有优先权。
    表选择分钟(名称),分钟(创建时间)将忽略分钟(名称)
    使用聚合子句(最小,最大,总和)时,限制和偏移量不适用
    表格选择的最小(名称)限制10偏移量5-最小(名称)是针对资产类型的所有实体计算的

    2.0

    特征
    软引用属性实现。
    图存储级别的唯一属性约束
    Janusgraph的Atlas索引修复工具
    在地图集中创建新关系时的关系通知
    Atlas导入变换处理程序实现

    更新
    更新了组件版本以使用Hadoop 3.1,Hive 3.1,HBase 2.0,Solr 7.5和Kafka 2.0
    将JanusGraph版本更新为0.3.1
    更新了身份验证以支持可信代理
    更新了补丁程序框架,以保留应用于地图集的typedef补丁程序并处理数据补丁程序。
    更新了指标模块以收集通知指标
    更新了Atlas导出以支持增量导出元数据。
    通知处理方面的改进:
    通知处理以支持批量提交
    通知处理中的新选项,可以忽略可能不正确的hive_column_lineage
    更新了Hive挂钩以避免重复的列世系实体;还更新了Atlas服务器以跳过重复的列世系实体
    改进了通知处理程序中的批处理,从而避免了多次处理实体
    添加选项以忽略/修剪临时/临时配置单元表的元数据
    创建新关系时避免不必要的查找
    界面改进:
    用户界面:基本搜索中“类型和分类”下拉列表之外的显示计数
    UI:显示流程实体的沿袭信息
    UI:沿袭图表显示实体特定的图标
    用户界面:在实体详细信息页面的关系视图内添加关系表。
    用户界面:在基本搜索中添加服务类型下拉菜单以过滤entitydef类型。
    各种错误修复和优化

    安装

    环境信息

    centos-release-7-2.1511.el7.centos.2.10.x86_64
    jdk1.8.0_241
    Hadoop-2.7.7
    Hive-2.3.6
    kafka_2.11-2.0.1
    Maven 3.5.4
    Node js 12.16.2
    Scala 2.11.12
    Atlas-1.1.0(内置zookeeper 3.4.6 hbase1.2.0 solr 5.5.1 也可以使用外部的 配置比较复杂,
    kafka是使用外部的)

    atlas配置文件

    atlas-env.sh

    #!/usr/bin/env bash
    #
    # Licensed to the Apache Software Foundation (ASF) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The ASF licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    # The java implementation to use. If JAVA_HOME is not found we expect java and jar to be in path
    #export JAVA_HOME=
    
    # any additional java opts you want to set. This will apply to both client and server operations
    #export ATLAS_OPTS=
    
    # any additional java opts that you want to set for client only
    #export ATLAS_CLIENT_OPTS=
    
    # java heap size we want to set for the client. Default is 1024MB
    #export ATLAS_CLIENT_HEAP=
    
    # any additional opts you want to set for atlas service.
    #export ATLAS_SERVER_OPTS=
    
    # indicative values for large number of metadata entities (equal or more than 10,000s)
    #export ATLAS_SERVER_OPTS="-server -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dumps/atlas_server.hprof -Xloggc:logs/gc-worker.log -verbose:gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1m -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps"
    
    # java heap size we want to set for the atlas server. Default is 1024MB
    #export ATLAS_SERVER_HEAP=
    
    # indicative values for large number of metadata entities (equal or more than 10,000s) for JDK 8
    #export ATLAS_SERVER_HEAP="-Xms15360m -Xmx15360m -XX:MaxNewSize=5120m -XX:MetaspaceSize=100M -XX:MaxMetaspaceSize=512m"
    
    # What is is considered as atlas home dir. Default is the base locaion of the installed software
    #export ATLAS_HOME_DIR=
    
    # Where log files are stored. Defatult is logs directory under the base install location
    #export ATLAS_LOG_DIR=
    
    # Where pid files are stored. Defatult is logs directory under the base install location
    #export ATLAS_PID_DIR=
    
    # where the atlas janusgraph db data is stored. Defatult is logs/data directory under the base install location
    #export ATLAS_DATA_DIR=
    
    # Where do you want to expand the war file. By Default it is in /server/webapp dir under the base install dir.
    #export ATLAS_EXPANDED_WEBAPP_DIR=
    
    # indicates whether or not a local instance of HBase should be started for Atlas
    export MANAGE_LOCAL_HBASE=true
    
    # indicates whether or not a local instance of Solr should be started for Atlas
    export MANAGE_LOCAL_SOLR=true
    
    # indicates whether or not cassandra is the embedded backend for Atlas
    export MANAGE_EMBEDDED_CASSANDRA=false
    
    # indicates whether or not a local instance of Elasticsearch should be started for Atlas
    export MANAGE_LOCAL_ELASTICSEARCH=false
    
    

    atlas-application.properties

    #
    # Licensed to the Apache Software Foundation (ASF) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The ASF licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    
    #########  Graph Database Configs  #########
    
    # Graph Database
    
    #Configures the graph database to use.  Defaults to JanusGraph
    #atlas.graphdb.backend=org.apache.atlas.repository.graphdb.janus.AtlasJanusGraphDatabase
    
    # Graph Storage
    # Set atlas.graph.storage.backend to the correct value for your desired storage
    # backend. Possible values:
    #
    # hbase
    # cassandra
    # embeddedcassandra - Should only be set by building Atlas with  -Pdist,embedded-cassandra-solr
    # berkeleyje
    #
    # See the configuration documentation for more information about configuring the various  storage backends.
    #
    atlas.graph.storage.backend=hbase
    atlas.graph.storage.hbase.table=apache_atlas_janus
    
    #Hbase
    #For standalone mode , specify localhost
    #for distributed mode, specify zookeeper quorum here
    atlas.graph.storage.hostname=localhost
    atlas.graph.storage.hbase.regions-per-server=1
    atlas.graph.storage.lock.wait-time=10000
    
    # Gremlin Query Optimizer
    #
    # Enables rewriting gremlin queries to maximize performance. This flag is provided as
    # a possible way to work around any defects that are found in the optimizer until they
    # are resolved.
    #atlas.query.gremlinOptimizerEnabled=true
    
    # Delete handler
    #
    # This allows the default behavior of doing "soft" deletes to be changed.
    #
    # Allowed Values:
    # org.apache.atlas.repository.store.graph.v1.SoftDeleteHandlerV1 - all deletes are "soft" deletes
    # org.apache.atlas.repository.store.graph.v1.HardDeleteHandlerV1 - all deletes are "hard" deletes
    #
    #atlas.DeleteHandlerV1.impl=org.apache.atlas.repository.store.graph.v1.SoftDeleteHandlerV1
    
    # Entity audit repository
    #
    # This allows the default behavior of logging entity changes to hbase to be changed.
    #
    # Allowed Values:
    # org.apache.atlas.repository.audit.HBaseBasedAuditRepository - log entity changes to hbase
    # org.apache.atlas.repository.audit.CassandraBasedAuditRepository - log entity changes to cassandra
    # org.apache.atlas.repository.audit.NoopEntityAuditRepository - disable the audit repository
    #
    atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.HBaseBasedAuditRepository
    
    # if Cassandra is used as a backend for audit from the above property, uncomment and set the following
    # properties appropriately. If using the embedded cassandra profile, these properties can remain
    # commented out.
    # atlas.EntityAuditRepository.keyspace=atlas_audit
    # atlas.EntityAuditRepository.replicationFactor=1
    
    
    # Graph Search Index
    atlas.graph.index.search.backend=solr
    
    #Solr
    #Solr cloud mode properties
    atlas.graph.index.search.solr.mode=cloud
    atlas.graph.index.search.solr.zookeeper-url=localhost:2181
    atlas.graph.index.search.solr.zookeeper-connect-timeout=60000
    atlas.graph.index.search.solr.zookeeper-session-timeout=60000
    atlas.graph.index.search.solr.wait-searcher=true
    
    #Solr http mode properties
    #atlas.graph.index.search.solr.mode=http
    #atlas.graph.index.search.solr.http-urls=http://localhost:8983/solr
    
    # Solr-specific configuration property
    atlas.graph.index.search.max-result-set-size=150
     
    #########  Notification Configs  ######### 
    atlas.notification.embedded=false
    atlas.kafka.data=${sys:atlas.home}/data/kafka
    atlas.kafka.zookeeper.connect=localhost:2181
    atlas.kafka.bootstrap.servers=localhost:9092
    atlas.kafka.zookeeper.session.timeout.ms=400
    atlas.kafka.zookeeper.connection.timeout.ms=200
    atlas.kafka.zookeeper.sync.time.ms=20
    atlas.kafka.auto.commit.interval.ms=1000
    atlas.kafka.hook.group.id=atlas
    
    atlas.kafka.enable.auto.commit=false
    atlas.kafka.auto.offset.reset=earliest
    atlas.kafka.session.timeout.ms=30000
    atlas.kafka.offsets.topic.replication.factor=1
    atlas.kafka.poll.timeout.ms=1000
    
    atlas.notification.create.topics=true
    atlas.notification.replicas=1
    atlas.notification.topics=ATLAS_HOOK,ATLAS_ENTITIES
    atlas.notification.log.failed.messages=true
    atlas.notification.consumer.retry.interval=500
    atlas.notification.hook.retry.interval=1000
    # Enable for Kerberized Kafka clusters
    #atlas.notification.kafka.service.principal=kafka/_HOST@EXAMPLE.COM
    #atlas.notification.kafka.keytab.location=/etc/security/keytabs/kafka.service.keytab
    
    ## Server port configuration
    #atlas.server.http.port=21000
    #atlas.server.https.port=21443
    
    #########  Security Properties  #########
    
    # SSL config
    atlas.enableTLS=false
    
    #truststore.file=/path/to/truststore.jks
    #cert.stores.credential.provider.path=jceks://file/path/to/credentialstore.jceks
    
    #following only required for 2-way SSL
    #keystore.file=/path/to/keystore.jks
    
    # Authentication config
    
    atlas.authentication.method.kerberos=false
    atlas.authentication.method.file=true
    
    #### ldap.type= LDAP or AD
    atlas.authentication.method.ldap.type=none
    
    #### user credentials file
    atlas.authentication.method.file.filename=${sys:atlas.home}/conf/users-credentials.properties
    
    ### groups from UGI
    #atlas.authentication.method.ldap.ugi-groups=true
    
    ######## LDAP properties #########
    #atlas.authentication.method.ldap.url=ldap://<ldap server url>:389
    #atlas.authentication.method.ldap.userDNpattern=uid={0},ou=People,dc=example,dc=com
    #atlas.authentication.method.ldap.groupSearchBase=dc=example,dc=com
    #atlas.authentication.method.ldap.groupSearchFilter=(member=uid={0},ou=Users,dc=example,dc=com)
    #atlas.authentication.method.ldap.groupRoleAttribute=cn
    #atlas.authentication.method.ldap.base.dn=dc=example,dc=com
    #atlas.authentication.method.ldap.bind.dn=cn=Manager,dc=example,dc=com
    #atlas.authentication.method.ldap.bind.password=<password>
    #atlas.authentication.method.ldap.referral=ignore
    #atlas.authentication.method.ldap.user.searchfilter=(uid={0})
    #atlas.authentication.method.ldap.default.role=<default role>
    
    
    ######### Active directory properties #######
    #atlas.authentication.method.ldap.ad.domain=example.com
    #atlas.authentication.method.ldap.ad.url=ldap://<AD server url>:389
    #atlas.authentication.method.ldap.ad.base.dn=(sAMAccountName={0})
    #atlas.authentication.method.ldap.ad.bind.dn=CN=team,CN=Users,DC=example,DC=com
    #atlas.authentication.method.ldap.ad.bind.password=<password>
    #atlas.authentication.method.ldap.ad.referral=ignore
    #atlas.authentication.method.ldap.ad.user.searchfilter=(sAMAccountName={0})
    #atlas.authentication.method.ldap.ad.default.role=<default role>
    
    #########  JAAS Configuration ########
    
    #atlas.jaas.KafkaClient.loginModuleName = com.sun.security.auth.module.Krb5LoginModule
    #atlas.jaas.KafkaClient.loginModuleControlFlag = required
    #atlas.jaas.KafkaClient.option.useKeyTab = true
    #atlas.jaas.KafkaClient.option.storeKey = true
    #atlas.jaas.KafkaClient.option.serviceName = kafka
    #atlas.jaas.KafkaClient.option.keyTab = /etc/security/keytabs/atlas.service.keytab
    #atlas.jaas.KafkaClient.option.principal = atlas/_HOST@EXAMPLE.COM
    
    #########  Server Properties  #########
    atlas.rest.address=http://localhost:21000
    # If enabled and set to true, this will run setup steps when the server starts
    #atlas.server.run.setup.on.start=false
    
    #########  Entity Audit Configs  #########
    atlas.audit.hbase.tablename=apache_atlas_entity_audit
    atlas.audit.zookeeper.session.timeout.ms=1000
    atlas.audit.hbase.zookeeper.quorum=localhost:2181
    
    #########  High Availability Configuration ########
    atlas.server.ha.enabled=false
    #### Enabled the configs below as per need if HA is enabled #####
    #atlas.server.ids=id1
    #atlas.server.address.id1=localhost:21000
    #atlas.server.ha.zookeeper.connect=localhost:2181
    #atlas.server.ha.zookeeper.retry.sleeptime.ms=1000
    #atlas.server.ha.zookeeper.num.retries=3
    #atlas.server.ha.zookeeper.session.timeout.ms=20000
    ## if ACLs need to be set on the created nodes, uncomment these lines and set the values ##
    #atlas.server.ha.zookeeper.acl=<scheme>:<id>
    #atlas.server.ha.zookeeper.auth=<scheme>:<authinfo>
    
    
    
    ######### Atlas Authorization #########
    atlas.authorizer.impl=simple
    atlas.authorizer.simple.authz.policy.file=atlas-simple-authz-policy.json
    
    #########  Type Cache Implementation ########
    # A type cache class which implements
    # org.apache.atlas.typesystem.types.cache.TypeCache.
    # The default implementation is org.apache.atlas.typesystem.types.cache.DefaultTypeCache which is a local in-memory type cache.
    #atlas.TypeCache.impl=
    
    #########  Performance Configs  #########
    #atlas.graph.storage.lock.retries=10
    #atlas.graph.storage.cache.db-cache-time=120000
    
    #########  CSRF Configs  #########
    atlas.rest-csrf.enabled=true
    atlas.rest-csrf.browser-useragents-regex=^Mozilla.*,^Opera.*,^Chrome.*
    atlas.rest-csrf.methods-to-ignore=GET,OPTIONS,HEAD,TRACE
    atlas.rest-csrf.custom-header=X-XSRF-HEADER
    
    ############ KNOX Configs ################
    #atlas.sso.knox.browser.useragent=Mozilla,Chrome,Opera
    #atlas.sso.knox.enabled=true
    #atlas.sso.knox.providerurl=https://<knox gateway ip>:8443/gateway/knoxsso/api/v1/websso
    #atlas.sso.knox.publicKey=
    
    ############ Atlas Metric/Stats configs ################
    # Format: atlas.metric.query.<key>.<name>
    atlas.metric.query.cache.ttlInSecs=900
    #atlas.metric.query.general.typeCount=
    #atlas.metric.query.general.typeUnusedCount=
    #atlas.metric.query.general.entityCount=
    #atlas.metric.query.general.tagCount=
    #atlas.metric.query.general.entityDeleted=
    #
    #atlas.metric.query.entity.typeEntities=
    #atlas.metric.query.entity.entityTagged=
    #
    #atlas.metric.query.tags.entityTags=
    
    #########  Compiled Query Cache Configuration  #########
    
    # The size of the compiled query cache.  Older queries will be evicted from the cache
    # when we reach the capacity.
    
    #atlas.CompiledQueryCache.capacity=1000
    
    # Allows notifications when items are evicted from the compiled query
    # cache because it has become full.  A warning will be issued when
    # the specified number of evictions have occurred.  If the eviction
    # warning threshold <= 0, no eviction warnings will be issued.
    
    #atlas.CompiledQueryCache.evictionWarningThrottle=0
    
    
    #########  Full Text Search Configuration  #########
    
    #Set to false to disable full text search.
    #atlas.search.fulltext.enable=true
    
    #########  Gremlin Search Configuration  #########
    
    #Set to false to disable gremlin search.
    atlas.search.gremlin.enable=false
    
    
    ########## Add http headers ###########
    
    #atlas.headers.Access-Control-Allow-Origin=*
    #atlas.headers.Access-Control-Allow-Methods=GET,OPTIONS,HEAD,PUT,POST
    #atlas.headers.<headerName>=<headerValue>
    
    ########## HIVE HOOK Configs #########
    
    # whether to run the hook synchronously. false recommended to avoid delays in Hive query completion. Default: false
    atlas.hook.hive.synchronous=false
    # number of retries for notification failure. Default: 3
    atlas.hook.hive.numRetries=3
    # queue size for the threadpool. Default: 10000
    atlas.hook.hive.queueSize=10000
    # clusterName to use in qualifiedName of entities. Default: primary 
    atlas.cluster.name=primary
    
    # atlas.hook.hive.synchronous - boolean, true to run the hook synchronously. default false. Recommended to be set to false to avoid delays in hive query completion.
    # atlas.hook.hive.numRetries - number of retries for notification failure. default 3
    # atlas.hook.hive.minThreads - core number of threads. default 1
    # atlas.hook.hive.maxThreads - maximum number of threads. default 5
    # atlas.hook.hive.keepAliveTime - keep alive time in msecs. default 10
    # atlas.hook.hive.queueSize - queue size for the threadpool. default 10000
    
    
    ######### Sqoop Hook Configs #######
    # whether to run the hook synchronously. false recommended to avoid delays in Sqoop operation completion. Default: false
    atlas.hook.sqoop.synchronous=false
    # number of retries for notification failure. Default: 3
    atlas.hook.sqoop.numRetries=3
    # queue size for the threadpool. Default: 10000
    atlas.hook.sqoop.queueSize=10000   
    ############
    
    

    启动

    1、启动hadoop
    
    
    [root@work3 maven]# start-all.sh 
    This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
    Starting namenodes on [localhost]
    localhost: starting namenode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-namenode-work3.alex.com.out
    localhost: datanode running as process 2139. Stop it first.
    Starting secondary namenodes [0.0.0.0]
    0.0.0.0: starting secondarynamenode, logging to /opt/hadoop-2.7.7/logs/hadoop-root-secondarynamenode-work3.alex.com.out
    starting yarn daemons
    starting resourcemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-resourcemanager-work3.alex.com.out
    localhost: starting nodemanager, logging to /opt/hadoop-2.7.7/logs/yarn-root-nodemanager-work3.alex.com.out
    
    可以访问hdfs web UI
    http://192.168.79.13:50070/dfshealth.html#tab-overview
    
    
    
    2、启动 hive 
    
    [root@work3 maven]# hive --service metastore 
    2020-05-04 17:40:49: Starting Hive Metastore Server
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/hive-2.3.6-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    
    如需后台运行 可以执行
    nohup hive --service metastore & 
    
    [root@work3 ~]# hiveserver2
    which: no hbase in (:/opt/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_241/bin:/opt/hadoop-2.7.7/bin:/opt/hadoop-2.7.7/sbin:/opt/hive-2.3.6-bin/bin:/opt/scala-2.11.12/bin:/opt/spark-2.4.5-bin-hadoop2.7/bin:/opt/node-v12.16.2-linux-x64/bin:/opt/zookeeper-3.4.6-bin/bin:/opt/phoenix4/bin:/opt/sqoop-1.4.7/bin:/opt/kylin-2.6.5-bin-hbase1x/bin:/opt/kafka_2.11-2.0.1/bin:/opt/phantomjs-2.1.1/bin:/root/bin)
    2020-05-04 17:43:46: Starting HiveServer2
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/hive-2.3.6-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    
    如需后台运行 可以执行
    nohup hiveserver2 & 
    
    3、启动atlas 
    [root@work3 atlas-1.1.0]# ./bin/atlas_start.py 
    configured for local hbase.
    hbase started.
    configured for local solr.
    solr started.
    setting up solr collections...
    starting atlas on host localhost
    starting atlas on port 21000
    ...............................................
    Apache Atlas Server started!!!
    
    
    4、启动kafka
    [root@work3 ~]# /opt/kafka_2.11-2.0.1/bin/kafka-server-start.sh /opt/kafka_2.11-2.0.1/config/server.properties
    [2020-05-04 17:49:35,120] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
    [2020-05-04 17:49:36,296] INFO starting (kafka.server.KafkaServer)
    [2020-05-04 17:49:36,301] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
    [2020-05-04 17:49:36,379] INFO [ZooKeeperClient] Initializing a new session to localhost:2181. (kafka.zookeeper.ZooKeeperClient)
    [2020-05-04 17:49:36,397] INFO Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT (org.apache.zookeeper.ZooKeeper)
    [2020-05-04 17:49:36,397] INFO Client environment:host.name=work3.alex.com (org.apache.zookeeper.ZooKeeper)
    [2020-05-04 17:49:36,397] INFO Client environment:java.version=1.8.0_241 (org.apache.zookeeper.ZooKeeper)
    [2020-05-04 17:49:36,397] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper)
    [2020-05-04 17:49:36,397] INFO Client environment:java.home=/opt/jdk1.8.0_241/jre (org.apache.zookeeper.ZooKeeper)
    
    
    
    
    
    
    5、访问 altas web监控界面
    
    http://192.168.79.13:21000/
    
    默认用户名admin
    密码 admin
    

    在这里插入图片描述
    在这里插入图片描述

    参考资料

    http://atlas.apache.org/#/

    https://atlas.apache.org/1.1.0/

    展开全文
  • Apache atlas 的入门教程

    万次阅读 多人点赞 2018-05-21 21:14:24
    笔者最近参加了2场大数据技术开放活动,在技术分享的时候,发现,2场分享活动,有人不约而同的推荐了Apache atlas 组件,所以,就像介绍一下这个组件。Apache atlas 是个什么样的工具?它有哪些功能和作用? 其实,...

    笔者最近参加了2场大数据技术开放活动,在技术分享的时候,发现,2场分享活动,有人不约而同的推荐了Apache atlas 组件,所以,就像介绍一下这个组件。Apache atlas 是个什么样的工具?它有哪些功能和作用?

    其实,在本人之前的文章中有介绍,它是一个用在hadoop上的数据治理和元数据框架工具。它是基于hadoop平台上,能无缝对接hadoop平台的组件。前端UI默认使用solr5,有丰富的rest API ,后端数据库可以是hive,hbase等。能导入不同格式的数据源,包括hive,hbase等(传统数据库,暂不清楚)。

    1.Apache atlas 安装

    安装步骤,官网上面有,链接:

    https://atlas.apache.org/InstallationSteps.html

    为方便操作,简单翻译一下步骤:
    环境:
    JDK8
    MAVEN3.X
    GIT
    PYTHON2.7以上

    (1)building atlas(构建atlas)

    git clone https://git-wip-us.apache.org/repos/asf/atlas.git atlas
    cd atlas
    export MAVEN_OPTS="-Xms2g -Xmx4g"
    mvn clean -DskipTests install
    

    注意:

    • 服务器内存至少要4G。笔者升级了几次配置。这是笔者的截图:
      这里写图片描述

      文件很多,要下比较1-2个小时,中间可能也有fail。

    (2)打包atlas

    (机器上已经装有hbase和solr)

    mvn clean -DskipTests package -Pdist
    

    (机器上没有装hbase和solr,atlas自带hbase和solr)

    mvn clean -DskipTests package -Pdist,embedded-hbase-solr
    

    本文这里选了后一种。

    (3)打包完,会在根目录下生成以下的包:

    (4)安装atlas

    tar -xzvf apache-atlas-${project.version}-bin.tar.gz
    
    cd atlas-${project.version}
    

    目前它会自动解压,这一步可以不要。

    下载完成后,目录结构:
    distro目录

    其中,atlas_home/distro/target 下面,
    apache-atlas-1.0.0-SNAPSHOT-bin 是其解压后的目录:
    atlas1.0目录

    注意:接下来是配置步骤。先看完黑体字,再接着看下文。

    如果只是atlas默认配置启动,命令

    cd /apache_atlas/atlas/distro/target/apache-atlas-1.0.0-SNAPSHOT-bin/apache-atlas-1.0.0-SNAPSHOT
    bin/atlas_start.py

    测试

    curl -v http://localhost:21000/api/atlas/admin/version

    报错
    Error 401 Full authentication is required to access this resource
    HTTP ERROR 401
    Problem accessing /api/atlas/admin/version. Reason:
    Full authentication is required to access this resource
    报错

    原因

    没有权限,正确命令:

    curl -v -u username:password http://localhost:21000/api/atlas/admin/version

    username:默认admin
    password:默认admin
    curl -v -u admin:admin http://localhost:21000/api/atlas/admin/version

    这样就成功了。

    上面的启动,solr,hbase 是内嵌式的,solr端口是9838,跟独立安装的默认端口8983不一样。如果需要自定义配置,尤其是使用hbase做图库的存储后端(HBase as the Storage Backend for the Graph Repository),solr做图表库的索引后端(SOLR as the Indexing Backend for the Graph Repository),请看下文

    (5)配置项。

    conf/atlas-env.sh

    # The java implementation to use. If JAVA_HOME is not found we expect java and jar to be in path
    #export JAVA_HOME=
    
    # any additional java opts you want to set. This will apply to both client and server operations
    #export ATLAS_OPTS=
    
    # any additional java opts that you want to set for client only
    #export ATLAS_CLIENT_OPTS=
    
    # java heap size we want to set for the client. Default is 1024MB
    #export ATLAS_CLIENT_HEAP=
    
    # any additional opts you want to set for atlas service.
    #export ATLAS_SERVER_OPTS=
    
    # java heap size we want to set for the atlas server. Default is 1024MB
    #export ATLAS_SERVER_HEAP=
    
    # What is is considered as atlas home dir. Default is the base location of the installed software
    #export ATLAS_HOME_DIR=
    
    # Where log files are stored. Defatult is logs directory under the base install location
    #export ATLAS_LOG_DIR=
    
    # Where pid files are stored. Defatult is logs directory under the base install location
    #export ATLAS_PID_DIR=
    
    # Where do you want to expand the war file. By Default it is in /server/webapp dir under the base install dir.
    #export ATLAS_EXPANDED_WEBAPP_DIR=
    

    如果/etc/profile没有配JAVA_HOME,需要配JAVA_HOME

    配置conf/atlas-application.properties:

    #使用hbase tables
    atlas.graph.storage.hbase.table=atlas
    atlas.audit.hbase.tablename=apache_atlas_entity_audit
    

    这一步,需要安装独立的solr集群,使用zookeeper是solr集群高可用。参考链接:
    https://cwiki.apache.org/confluence/display/solr/SolrCloud

    启动solr集群

    cd solr/bin

    ./solr create -c vertex_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
    ./solr create -c edge_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
    ./solr create -c fulltext_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
    

    SOLR_CONF : solrconfig.xml所在的目录,其实笔者之前也一直没有搞清楚。笔者这里是:
    /usr/local/solr-5.5.1

    如果不知道要创建多少numShards ,可忽略,默认是1。笔者的配置如下:

    cd /apache_atlas/atlas/distro/target/solr/bin
    export SOLR_CONF=/usr/local/solr-5.5.1
    ./solr start -c -z localhost:2181 -p 8983
    ./solr create -c vertex_index -d $SOLR_CONF
    ./solr create -c edge_index -d $SOLR_CONF
    ./solr create -c fulltext_index -d $SOLR_CONF

    启动solr集群后,在atlas-application.properties中配置:

    #
    atlas.kafka.zookeeper.connect=localhost:2181
    atlas.graph.index.search.backend=solr5
    atlas.graph.index.search.solr.mode=cloud
    atlas.graph.index.search.solr.zookeeper-url=10.1.6.4:2181,10.1.6.5:2181
    atlas.graph.index.search.solr.zookeeper-connect-timeout=60000 ms
    atlas.graph.index.search.solr.zookeeper-session-timeout=60000 ms
    

    启动hbase

    cd hbase/bin

    ./start-hbase.sh

    启动atlas:

    bin/atlas_start.py
    

    atlas UI界面:

    http://localhost:21000/
    

    错误1

    java.io.FileNotFoundException: /apache_atlas/atlas/distro/target/server/webapp/atlas.war (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.tools.jar.Main.run(Main.java:307)
        at sun.tools.jar.Main.main(Main.java:1288)
    The Server is no longer running with pid 6353
    configured for local hbase.
    hbase started.
    configured for local solr.
    solr started.
    setting up solr collections...
    starting atlas on host localhost
    starting atlas on port 21000

    这是atlas启动的路径不对导致。网上没有该解决方法。后来发现启动的路径不对,笔者这里,之前启动路径是:
    /apache_atlas/atlas/distro/target/
    正确的启动路径是:
    /apache_atlas/atlas/distro/target/apache-atlas-1.0.0-SNAPSHOT-bin/apache-atlas-1.0.0-SNAPSHOT/

    错误2
    /apache_atlas/atlas/distro/target/logs 错误日志会有:

    ERROR: 
    Collection 'vertex_index' already exists!
    Checked collection existence using Collections API command:
    http://localhost:9838/solr/admin/collections?action=list

    这是重名collection冲突。命令:
    jps
    看看是否有多个jar进程。该进程是solr进程。

    希望别人不要犯跟我一样的错误。

    错误3

    2018-05-05 11:10:18,545 WARN  - [main:] ~ Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'services': Invocation of init method failed; nested exception is java.lang.RuntimeException: org.apache.atlas.AtlasException: Failed to start embedded kafka (AbstractApplicationContext:550)
    2018-05-05 11:10:18,699 ERROR - [main:] ~ Context initialization failed (ContextLoader:350)
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'services': Invocation of init method failed; nested exception is java.lang.RuntimeException: org.apache.atlas.AtlasException: Failed to start embedded kafka
    Caused by: org.apache.atlas.AtlasException: Failed to start embedded kafka
        at org.apache.atlas.kafka.EmbeddedKafkaServer.start(EmbeddedKafkaServer.java:83)
        at org.apache.atlas.service.Services.start(Services.java:67)
        ... 40 more
    Caused by: java.net.BindException: Address already in use

    原因
    端口占用。查看conf/atlas-application.properties
    atlas.kafka.zookeeper.connect=localhost:*
    端口是否占用。


    简单说了下atlas安装,接下来说下使用方式。

    2.Apache atlas 使用方式

    再说下rest api的使用方式

    需要关注的地方:
    api部分

    Apache atlas Api主要是对Type,Entity,Attribute这3个构件的增删改查操作。这听起来有点意外,实际上,其它的很多东西被封装了,还有包含在配置文件里,留下Api和Admin UI供外部调用。

    简单介绍一下这几个构件。

    Type

    Atlas 中的 “类型” 是一个定义, 说明如何存储并访问特定类型的元数据对象,。类型表示一个特征或一个特性集合, 这些属性定义了元数据对象。具有开发背景的用户将识别类型的相似性, 以面向对象编程语言的 “Class” 定义或关系的 “table schema”数据库。

    Entity

    Atlas 中的一个 “实体” 是类 “type” 的特定值或实例, 因此表示特定的

    现实世界中的元数据对象。回指我们的面向对象的类比

    编程语言, “instance” 是某个 “Class” 的 “Object”。

    Attribute

    属性定义在复合 metatypes 中, 如Class和Struct。

    可以简单将属性称为具有名称和 metatype 值。然而

    Atlas 中的属性有更多的属性来定义与type system相关的更多概念。


    上面的定义难以理解。笔者心理也比较抗拒。所以,先看几个例子。

    例子(1)

    使用Type定义一个Hive table,而且有一些Attribute

    Name: hive_table
    MetaType: Class
    SuperTypes: DataSet
    Attributes:
        name: String (name of the table)
        db: Database object of type hive_db
        owner: String
        createTime: Date
        lastAccessTime: Date
        comment: String
        retention: int
        sd: Storage Description object of type hive_storagedesc
        partitionKeys: Array of objects of type hive_column
        aliases: Array of strings
        columns: Array of objects of type hive_column
        parameters: Map of String keys to String values
        viewOriginalText: String
        viewExpandedText: String
        tableType: String
        temporary: Boolean

    这跟java类的定义很相似,也跟json数据定义类似。需要注意的几点:

    1. Atlas 中的类型由 “name” 唯一标识
    2. 每个type 具有 一个metatype。metatype 表示该模型在 Atlas 中的类型。
    3. Atlas 有以下 metatypes:

      • 基本 metatypes: 如 Int、字符串、布尔值等。
      • 枚举 metatypes: TODO
      • 集合 metatypes: 例如阵列、地图
      • 复合 metatypes: 如类、结构、特性

      4.类型可以从名为 “supertype” 的父类型 “extend” 。凭借这一点, 它将得到还包括在超类型中定义的属性。这使模型设计家以在一组相关类型中定义公共属性等。这再次类似于面向对象语言如何定类的超级类的概念。在本示例中, 每个配置单元表都从预定义的超类型称为”DataSet”。有关此预定义的更多详细信息类型将在以后提供。在 Atlas 中的类型也可以从多个超级类型扩展。
      5.具有 “Class”、”Struct” 或 “Trait” metatype 的类型可以有一个集合
      属性。每个属性都有一个名称 (例如 “name”) 和其他一些关联的
      性能。属性可以引用为使用表达式。

    从上面的说明看,atlas type似乎具有和java中class类似的性质,比如继承。如果我们按照java中对象关系的角度理解,会更容易理解一些。

    例子(2)

    一个Entity的定义

    id: "9ba387ddfa76429cb791ffc338d3c91f"
    typeName: “hive_table”
    values:
        name: “customers”
        db: "b42c6cfcc1e742fda9e6890e0adf33bc"
        owner: “admin”
        createTime: "20160620T06:
        13:28.000Z"
        lastAccessTime: "20160620T06:
        13:28.000Z"
        comment: null
        retention: 0
        sd: "ff58025f685441959f753a3058dd8dcf"
        partitionKeys: null
        aliases: null
        columns: ["65e2204f6a234130934a9679af6a211f",
        "d726de70faca46fb9c99cf04f6b579a6",
        ...]
        parameters: {"transient_lastDdlTime": "1466403208"}
        viewOriginalText: null
        viewExpandedText: null
        tableType: “MANAGED_TABLE”
        temporary: false

    上面的id就是Entity的id。顺着java 对象的思路,Entity结构也是比较容易理解的。

    例子(3)

    常用api:

    (1)获取所有的types

    GET http://atlasserverhost:port/api/atlas/types

    GET http://atlasserverhost:port/api/atlas/types?type=STRUCT|CLASS|TRAIT

    Response

    {
    "results": [
        "Asset",
        "hive_column",
        "Process",
        "storm_node",
        "storm_bolt",
        "falcon_process",
        "falcon_feed_replication",
        "hive_serde",
        "kafka_topic",
        "hive_table",
        "hive_storagedesc",
        "sqoop_dbdatastore",
        "hive_principal_type",
        "fs_permissions",
        "jms_topic",
        "hive_process",
        "falcon_cluster",
        "storm_spout",
        "Referenceable","falcon_feed_creation",
        "falcon_feed",
        "hdfs_path",
        "sqoop_process",
        "Infrastructure",
        "storm_topology",
        "hive_order",
        "DataSet",
        "fs_path",
        "hive_db",
        "file_action"
    ],
    "count": 34,
    "requestId": "qtp180396531315
    b17554dcf93d4d7fa6ede124388a5759"
    }

    (2)获取某一个type

    GET http://atlas­server­host:port/api/atlas/types / {type_name}

    E.g. GET http://atlas­server­host:port/api/atlas/types /hive_column

    (3)创建新type

    POST http://atlas­server­host:port/api/atlas/type

    (4)创建新entity

    http://atlas­server­host:port/api/atlas/ entities

    entities:是一个数组

    (5)获取一个entity:

    GET http://atlas­server­host:port/api/atlas/ entities / {guid}

    guid:entity的id

    (6)获取一个包含某个attribute(属性)的entity

    GET http://atlas­server­host:port/api/atlas/ entities?type={type_name}&p roperty={unique_attribute_name}&value={unique_attribute_value

    (7)更新entity的一个attribute属性

    POST http://atlas­server­host:port/api/atlas/ entities/{GUID}

    response 都是一个json结构,跟solr api是类似的。


    上面是Atlas Api的基本查询等。下面说下在Api中创建血缘关系。

    未完待续。

    展开全文
  • Atlas安装详解

    千次阅读 2020-06-02 10:34:52
    一、Atlas简介 1.Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能,它为Hadoop...

    一、Atlas简介

    1.Atlas概述

    Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能,它为Hadoop集群提供了包括 数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。

    2. Atlas框架原理

    在这里插入图片描述

    2.1 Core层

    Atlas核心包含以下组件:
    2.1.1 类型系统(Type System): 用户为他们想要管理的元数据对象定义模型。Type System称为“实体”的“类型”实例,表示受管理的实际元数据对象。
    2.1.2 图形引擎(Graph Engine): Atlas在内部使用Graph模型持久保存它管理的元数据对象。
    2.1.3 采集/导出(Ingest/Export):采集组件允许将元数据添加到Atlas。同样,“导出”组件将Atlas检测到的元数据更改公开为事件。

    2.2 Integration层

    在Atlas中,用户可以使用以下的两种方式管理元数据:
    2.2.1 API: Atlas的所有功能都通过REST API向最终用户暴露,该API允许创建,更新和删除类型和实体。它也是查询和发现Atlas管理的类型和实体的主要机制。
    2.2.2 Messaging: 除了API之外,用户还可以选择使用基于Kafka的消息传递接口与Atlas集成。

    2.3 Metadata sources层

    使用HDFS进行存储,使用MapReduce进行计算。
    目前,Atlas支持从以下来源提取和管理元数据:HBase 、Hive、Sqoop、Storm、Kafka

    2.4 Applications层

    Atlas管理的元数据被各种应用程序使用,以满足许多治理需求。
    2.4.1 Atlas Admin UI: 该组件是一个基于Web的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似SQL的查询语言,可用于查询Atlas管理的元数据类型和对象。
    2.4.2 Ranger Tag Based Policies:权限管理模块

    二、下载

    1.Atlas官网地址

    https://atlas.apache.org/

    2.下载地址

    https://www.apache.org/dyn/closer.cgi/atlas/0.8.4/apache-atlas-0.8.4-sources.tar.gz
    Solr下载: http://archive.apache.org/dist/lucene/solr/5.2.1/solr-5.2.1.tgz

    三、安装

    1.安装环境准备

    1.1安装Maven

    (1)解压apache-maven-3.6.1-bin.tar.gz
    [root@bigdata3 soft]$ tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /opt/
    (2)修改apache-maven-3.6.1的名称为maven
    [root@bigdata3 opt]$ mv apache-maven-3.6.1/ maven
    (3)配置Maven环境变量
    [root@bigdata3 opt]$ vim /etc/profile
    #MAVEN_HOME
    export MAVEN_HOME=/opt/module/maven
    export PATH=PATH:PATH:MAVEN_HOME/bin
    (4)测试安装结果
    [root@bigdata3 opt]$ source /etc/profile
    [root@bigdata3 opt]$ mvn -v
    (5)修改setting.xml,指定为阿里云
    [root@bigdata3 maven]$ cd conf
    [root@bigdata3 maven]$ vim settings.xml

    nexus-aliyun central Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public ### 1.2安装Solr集群(只装了单节点) (1)解压solr-5.2.1.tgz [root@bigdata3 soft]$ tar -zxvf solr-5.2.1.tgz -C /opt/ (2)修改solr-5.2.1的名称为solr [root@bigdata3 opt]$ mv solr-5.2.1/ solr (3)进入solr/bin目录,修改solr.in.sh文件(如果是solr集群模式,分发solr目录到其他节点,修改SOLR_HOST为当节点) [root@bigdata3 solr]$ vim bin/solr.in.sh #添加下列指令 ZK_HOST="bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181" SOLR_HOST="bigdata3.jms.com" Sets the port Solr binds to, default is 8983 #可修改端口号 SOLR_PORT=8983 (4)启动solr(先启动Zookeeper服务),cloud模式。(如果是solr集群模式,都可启动并访问) [root@bigdata3 solr]$ bin/solr start -c -z bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181 -p 8983 (5)Web访问8983端口 http://bigdata3.jms.com:8983/solr/#/

    提示:UI界面出现Cloud菜单栏时,solr的Cloud模式才算部署成功。

    1.3其他环境要求

    JDK8、稳定运行的Hadoop集群、Zookeeper集群、Hbase集群(要求1.x)Hive数据仓库、Kafka集群、Solr集群(5.2.1)

    2.安装Atlas

    Atlas对Hadoop、Solr、Kafka、Hbase等的版本都有要求,hdp集群的版本都较低,故折中选择Atlas0.84
    2.1 编译Atlas源码包
    (1)解压apache-atlas-0.8.4-sources.tar.gz
    [root@bigdata3 soft]$ tar -zxvf apache-atlas-0.8.4-sources.tar.gz -C /opt/module/
    (2)修改apache-atlas-sources-0.8.4的名称为atlas
    [root@bigdata3 opt]$ mv apache-atlas-sources-0.8.4/ atlas
    (3)构建Atlas
    [root@bigdata3 atlas]$ export MAVEN_OPTS="-Xms2g -Xmx2g"
    [root@bigdata3 atlas]$ mvn clean -DskipTests install#一定要在atlashomebin2.2Atlas1apacheatlas0.8.4bin.tar.gz[root@bigdata3soft]{atlas_home}执行 提示:需翻墙,网络要求很高,尝试多次未果,下载网上开源编译好的bin包 2.2 安装Atlas 编译包 (1)解压apache-atlas-0.8.4-bin.tar.gz [root@bigdata3 soft] tar -zxvf apache-atlas-0.8.4-bin.tar.gz -C /opt/
    (2)修改apache-atlas-0.8.4的名称为atlas
    [root@bigdata opt]$ mv apache-atlas-0.8.4/ atlas

    3.集成外部Hbase

    (1)进入/opt/atlas/conf/目录,修改配置文件
    [root@bigdata3 conf]$ vim atlas-application.properties
    #修改atlas存储数据主机(hbase对应zk的主机名)
    atlas.graph.storage.hostname=bigdata3.jms.com,bigdata2.jms.com,bigdata1.jms.com
    (2)进入/opt/atlas/conf/hbase路径,添加Hbase集群的配置文件到 AtlasHome[root@bigdata3hbase]{Atlas_Home} [root@bigdata3 hbase] ln -s /usr/hdp/2.6.5.0-292/hbase/conf/ /opt/atlas/conf/hbase/
    (3)在/opt/atlas/conf/atlas-env.sh中添加HBASE_CONF_DIR
    [root@bigdata3 conf]$ vim atlas-env.sh
    #添加HBase配置文件路径
    export HBASE_CONF_DIR=/opt/atlas/conf/hbase/conf

    4.集成外部Solr

    (1)进入/opt/module/atlas/conf目录,修改配置文件
    [root@bigdata3 conf]$ vim atlas-application.properties
    修改如下配置
    atlas.graph.index.search.solr.zookeeper-url=bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181
    (2)将Atlas自带的Solr文件夹拷贝到外部Solr集群的节点上。
    [root@bigdata3 conf]$ cp -r /opt/atlas/conf/solr /opt/solr/
    (3)进入到/opt/module/solr路径,修改拷贝过来的配置文件名称为atlas_conf
    [root@bigdata3 solr]$ mv solr atlas_conf
    (4)在Cloud模式下,启动Solr(需要提前启动Zookeeper集群),并创建collection
    [root@bigdata3 solr]$ bin/solr create -c vertex_index -d /opt/solr/atlas_conf -shards 3 -replicationFactor 2
    [root@bigdata3 solr]$ bin/solr create -c edge_index -d /opt/solr/atlas_conf -shards 3 -replicationFactor 2
    [root@bigdata3 solr]$ bin/solr create -c fulltext_index -d /opt/solr/atlas_conf -shards 3 -replicationFactor 2
    -shards 3:表示该集合分片数为3
    -replicationFactor 2:表示每个分片数都有2个备份
    vertex_index、edge_index、fulltext_index:表示集合名称
    注意:如果需要删除vertex_index、edge_index、fulltext_index等collection可以执行如下命令。
    [root@bigdata3 solr]$ bin/solr delete -c ${collection_name}
    (5)验证创建collection成功
    登录solr web控制台:http://bigdata3.jms.com:8983/solr/#/~cloud 看到如下图显示:

    5.集成Hive

    (1)进入/opt/atlas/conf/目录,修改配置文件

    [root@bigdata3 conf]$ vim atlas-application.properties
    ######### Hive Hook Configs #######
    atlas.hook.hive.synchronous=false
    atlas.hook.hive.numRetries=3
    atlas.hook.hive.queueSize=10000
    atlas.cluster.name=yl_bigdata

    (2)将atlas-application.properties配置文件加入到atlas-plugin-classloader-1.0.0.jar中

    [root@bigdata3 hive]$ zip -u /opt/atlas/hook/hive/atlas-plugin-classloader-0.8.4.jar /opt/atlas/conf/atlas-application.properties
    [root@bigdata3 hive]$ cp /opt/atlas/conf/atlas-application.properties /usr/hdp/2.6.5.0-292/hive/conf/

    (3)hdp集群上更改hive-site.xml文件,设置Atlas hook

    hive.exec.post.hooks: org.apache.atlas.hive.hook.HiveHook (提示:该属性已有一个变量,在后面添加即可)

    6.集成Kafka

    (1)进入/opt/atlas/conf/目录,修改配置文件atlas-application.properties

    [root@bigdata3 conf]$ vim atlas-application.properties
    ######### Notification Configs #########
    atlas.notification.embedded=false
    atlas.kafka.zookeeper.connect=bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181
    atlas.kafka.bootstrap.servers=bigdata5.jms.com:6667,bigdata6.jms.com:6667,bigdata4.jms.com:6667(提示:hdp集群kafka默认端口是6667)
    atlas.kafka.zookeeper.session.timeout.ms=4000
    atlas.kafka.zookeeper.connection.timeout.ms=2000
    atlas.kafka.enable.auto.commit=true
    atlas.notification.create.topics=true
    atlas.notification.topics=ATLAS_HOOK,ATLAS_ENTITIES

    (2)创建Topic(可以不创建,启动Atlas会自动创建)

    [root@bigdata3 kafka]$ bin/kafka-topics.sh --zookeeper bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181
    –create --replication-factor 3 --partitions 3 --topic ATLAS_HOOK
    [root@bigdata3 kafka]$ bin/kafka-topics.sh --zookeeper bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181
    –create --replication-factor 3 --partitions 3 --topic ATLAS_ENTITIES

    7.其他配置

    atlas-application.properties 其他配置
    ######### Server port configuration #########
    atlas.client.readTimeoutMSecs=60000
    atlas.client.connectTimeoutMSecs=60000
    ######### Security Properties #########
    SSL config
    atlas.enableTLS=false
    ######### Server Properties #########
    atlas.rest.address=http://bigdata3.jms.com:21000
    If enabled and set to true, this will run setup steps when the server starts
    atlas.server.run.setup.on.start=false
    ######### Entity Audit Configs #########
    atlas.audit.hbase.tablename=apache_atlas_entity_audit
    atlas.audit.zookeeper.session.timeout.ms=1000
    atlas.audit.hbase.zookeeper.quorum=bigdata3.jms.com:2181,bigdata2.jms.com:2181,bigdata1.jms.com:2181

    8.启动Atlas服务

    [root@bigdata3 atlas]$ bin/atlas_start.py
    提示:错误信息查看路径:/opt/module/atlas/logs/*.out和application.log
    访问地址:http://bigdata3.jms.com:21000
    注意:等待时间大概2分钟。
    账户:admin
    密码:admin

    9.将Hive元数据导入Atlas

    (1)在/opt/atlas/路径,将Hive元数据导入到Atlas
    [root@bigdata3 atlas]$ bin/import-hive.sh
    输入用户名:admin;输入密码:admin
    (2)导入不成功可参考/opt/atlas/logs/import-hive.log
    (3)导入后hive需要执行insert (select)等操作,并且有数据改变才能显示表之间的血缘关系,否则在安装Atlas之前建的库表只有建表的血缘显示。

    四、使用

    1.界面查看
    1.1 访问http://jms.com:21000端口号,进行登录账号密码默认都为admin,登录成功页面如下:
    在这里插入图片描述
    1.2 查询Hive库
    1.2.1 选择hive_db,Search
    在这里插入图片描述
    1.2.2 点击dwb库,查看库信息
    在这里插入图片描述
    1.2.3 点击Tables,查看表信息
    在这里插入图片描述
    1.2.4 进入任意表,Properties可看基本信息,Lineage可看表间的血缘关系,Tags可看标签,也可添加标签,Audits可看表修改更新详情,Schema可看字段详情
    在这里插入图片描述

    五、问题解决方案

    1.Atlas UI页面出现503错误

    在这里插入图片描述

    1.1首先先排查是否是solr集群是否正常运行,查看solr页面cloud模式是否有vertex_index、edge_index、fulltext_index三个collection

    在这里插入图片描述
    1.2如果不是solr的问题,查看/opt/module/atlas/logs/*.out和log日志,发现是Hbase的问题
    在这里插入图片描述
    1.2.1首先检查Hbase是否正常运行,然后检查Hbase是否有Atlas的信息表,可在Hbase的节点上执行hbase shell,然后list查看
    在这里插入图片描述
    1.2.2因Atlas和Hbase的节点不同,查看atlas-env.sh的HBASE_CONF_DIR指向目录下的文件是否跟Hbase与zk对应的节点相同,最好拷贝一份到Atlas相同节点上

    2.导入不成功,查看日志import-hive.log

    2.1找不到TaskAttemptContext类
    在这里插入图片描述

    2.1.1缺少hadoop-mapreduce-client-core-2.7.3 jar包,去maven仓库下载对应hadoop版本的jar包放到/opt/atlas/hook/hive/atlas-hive-plugin-impl目录下

    2.2导入表失败,读取时间超时(org.apache.atlas.hook.AtlasHookException: HiveMetaStoreBridge.registerTable() failed.)
    在这里插入图片描述
    2.2.1Kafka的问题,hdp的默认端口是6667,在atlas-application.properties修改,首先删除kafka的对应的Topic(ATLAS_HOOK,ATLAS_ENTITIES),修改后重启Atlas服务。

    3.ZookeeperException

    想要solr重建索引,删除collection后,重建不成功,报找不到索引错误
    Could not find configName for collection vertex_index found:[]
    在这里插入图片描述

    3.1 Zookeeper内索引不存在, 在另一个zookeeper集群(测试)安装solr,atlas后确认zookeeper内新增的索引文件,删掉新增的索引文件,重装solr,新建collection。

    展开全文
  • 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采用Hadoop必须考虑数据管理的实际情况,元数据与数据治理成为企业级数据湖的重要...Apache Atlas 项目就是...

     

    面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采用Hadoop必须考虑数据管理的实际情况,元数据与数据治理成为企业级数据湖的重要部分。

    为寻求数据治理的开源解决方案,Hortonworks 公司联合其他厂商与用户于2015年发起数据治理倡议,包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理等方面。Apache Atlas 项目就是这个倡议的结果,社区伙伴持续的为该项目提供新的功能和特性。该项目用于管理共享元数据、数据分级、审计、安全性以及数据保护等方面,努力与Apache Ranger整合,用于数据权限控制策略。

    Hadoop介绍:https://blog.csdn.net/zzhuan_1/article/details/86077266

    Atlas 是一个可扩展和可扩展的核心基础治理服务集 - 使企业能够有效地和高效地满足 Hadoop 中的合规性要求,并允许与整个企业数据生态系统的集成。

    Atlas 的组件可以分为以下主要类别:

    Core

    此类别包含实现 Atlas 功能核心的组件,包括:

    Type System:Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为 "类型" 的定义组成。"类型" 的 实例被称为 "实体" 表示被管理的实际元数据对象。类型系统是一个组件,允许用户定义和管理类型和实体。由 Atlas 管理的所有元数据对象(例如Hive表)都使用类型进行建模,并表示为实体。要在 Atlas 中存储新类型的元数据,需要了解类型系统组件的概念。

    需要注意的一个关键点是,Atlas 中建模的通用性质允许数据管理员和集成者定义技术元数据和业务元数据。也可以使用 Atlas 的特征来定义两者之间的丰富关系。

    Ingest / Export:Ingest 组件允许将元数据添加到 Atlas。类似地,Export 组件暴露由 Atlas 检测到的元数据更改,以作为事件引发,消费者可以使用这些更改事件来实时响应元数据更改。

    Graph Engine :在内部,Atlas 通过使用图形模型管理元数据对象。以实现元数据对象之间的巨大灵活性和丰富的关系。图形引擎是负责在类型系统的类型和实体之间进行转换的组件,以及基础图形模型。除了管理图形对象之外,图形引擎还为元数据对象创建适当的索引,以便有效地搜索它们。

    Titan:目前,Atlas 使用 Titan 图数据库来存储元数据对象。 Titan 使用两个存储:默认情况下元数据存储配置为 HBase ,索引存储配置为 Solr。也可以通过构建相应的配置文件将元数据存储作为 BerkeleyDB 和 Index 存储使用为 ElasticSearch。元数据存储用于存储元数据对象本身,并且索引存储用于存储元数据属性的索引,其允许高效搜索。

    Integration

    用户可以使用两种方法管理 Atlas 中的元数据:

    API:Atlas 的所有功能通过 REST API 提供给最终用户,允许创建,更新和删除类型和实体。它也是查询和发现通过 Atlas 管理的类型和实体的主要方法。

    Messaging:除了 API 之外,用户还可以选择使用基于 Kafka 的消息接口与 Atlas 集成。这对于将元数据对象传输到 Atlas 以及从 Atlas 使用可以构建应用程序的元数据更改事件都非常有用。如果希望使用与 Atlas 更松散耦合的集成,这可以允许更好的可扩展性,可靠性等,消息传递接口是特别有用的。Atlas 使用 Apache Kafka 作为通知服务器用于钩子和元数据通知事件的下游消费者之间的通信。事件由钩子和 Atlas 写到不同的 Kafka 主题。

    元数据源

    Atlas 支持与许多元数据源的集成。将来还会添加更多集成。目前,Atlas 支持从以下来源获取和管理元数据:

    HiveSqoopFalconStorm

    与其它元数据源集成意味着两件事:有一些元数据模型,Atlas 定义本机来表示这些组件的对象。 Atlas 提供了从这些组件中通过实时或批处理模式获取元数据对象的组件。

    Apps

    由 Atlas 管理的元数据各种应用程序使用,满足许多治理用例。

    Atlas Admin UI:该组件是一个基于 Web 的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和 SQL 样的查询语言,可以用来查询由 Atlas 管理的元数据类型和对象。管理 UI 使用 Atlas 的 REST API 来构建其功能。

    Tag Based Policies:Apache Ranger 是针对 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件具有广泛的集成。通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略,以实现有效的治理。 Ranger 是由 Atlas 通知的元数据更改事件的消费者。

    Business Taxonomy:从元数据源获取到 Atlas 的元数据对象主要是一种技术形式的元数据。为了增强可发现性和治理能力,Atlas 提供了一个业务分类界面,允许用户首先定义一组代表其业务域的业务术语,并将其与 Atlas 管理的元数据实体相关联。业务分类法是一种 Web 应用程序,目前是 Atlas Admin UI 的一部分,并且使用 REST API 与 Atlas 集成。

    Type System

    Overview

    Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为 "类型" 的定义组成。被称为 "实体" 的 "类型" 实例表示被管理的实际元数据对象。类型系统是一个组件,允许用户定义和管理类型和实体。由 Atlas 管理的所有元数据对象(例如Hive表)都使用类型进行建模,并表示为实体。要在Atlas中存储新类型的元数据,需要了解类型系统组件的概念。

    Types

    Atlas中的 "类型" 定义了如何存储和访问特定类型的元数据对象。类型表示了所定义元数据对象的一个或多个属性集合。具有开发背景的用户可以将 "类型" 理解成面向对象的编程语言的 "类" 定义的或关系数据库的 "表模式"。

     

    与 Atlas 本地定义的类型的示例是 Hive 表。 Hive 表用这些属性定义:

     Name: hive_table
      MetaType: Class
      SuperTypes: DataSet
      Attributes:
          name: String (name of the table)
          db: Database object of type hive_db
          owner: String
          createTime: Date
          lastAccessTime: Date
          comment: String
          retention: int
          sd: Storage Description object of type hive_storagedesc
          partitionKeys: Array of objects of type hive_column
          aliases: Array of strings
          columns: Array of objects of type hive_column
          parameters: Map of String keys to String values
          viewOriginalText: String
          viewExpandedText: String
          tableType: String
          temporary: Boolean
    

     

    从上面的例子可以注意到以下几点:

    • Atlas中的类型由 "name" 唯一标识,

    • 类型具有元类型。元类型表示 Atlas 中此模型的类型。 Atlas 有以下几种类型:

      • 基本元类型: Int,String,Boolean等。

      • 枚举元类型

      • 集合元类型:例如Array,Map

      • 复合元类型:Class,Struct,Trait

    • 类型可以从称为 "supertype" 的父类型 "extend" - 凭借这一点,它将包含在 "supertype" 中定义的属性。这允许模型在一组相关类型等之间定义公共属性。这再次类似于面向对象语言如何定义类的超类的概念。 Atlas 中的类型也可以从多个超类型扩展。

      • 在该示例中,每个 hive 表从预定义的超类型(称为 "DataSet")扩展。稍后将提供关于此预定义类型的更多细节。

    • 具有 "Class","Struct" 或 "Trait" 的元类型的类型可以具有属性集合。每个属性都有一个名称(例如 "name")和一些其他关联的属性。可以使用表达式 type_name.attribute_name 来引用属性。还要注意,属性本身是使用 Atlas 元类型定义的。

      • 在这个例子中,hive_table.name 是一个字符串,hive_table.aliases 是一个字符串数组,hive_table.db 引用一个类型的实例称为 hive_db 等等。

    • 在属性中键入引用(如hive_table.db)。使用这样的属性,我们可以在 Atlas 中定义的两种类型之间的任意关系,从而构建丰富的模型。注意,也可以收集一个引用列表作为属性类型(例如 hive_table.cols,它表示从 hive_table 到 hive_column 类型的引用列表)

    Entities

    Atlas中的 "实体" 是类 "类型" 的特定值或实例,因此表示真实世界中的特定元数据对象。 回顾我们的面向对象编程语言的类比,"实例" 是某个 "类" 的 "对象"。

     

    实体的示例将是特定的 Hive 表。 说 "Hive" 在 "默认" 数据库中有一个名为 "customers" 的表。 此表将是类型为 hive_table 的 Atlas 中的 "实体"。 通过作为类类型的实例,它将具有作为 Hive 表 "类型" 的一部分的每个属性的值,例如:

     id: "9ba387dd-fa76-429c-b791-ffc338d3c91f"
      typeName: “hive_table”
      values:
          name: "customers"
          db: "b42c6cfc-c1e7-42fd-a9e6-890e0adf33bc"
          owner: "admin"
          createTime: "2016-06-20T06:13:28.000Z"
          lastAccessTime: "2016-06-20T06:13:28.000Z"
          comment: null
          retention: 0
          sd: "ff58025f-6854-4195-9f75-3a3058dd8dcf"
          partitionKeys: null
          aliases: null
          columns: ["65e2204f-6a23-4130-934a-9679af6a211f", "d726de70-faca-46fb-9c99-cf04f6b579a6", ...]
          parameters: {"transient_lastDdlTime": "1466403208"}
          viewOriginalText: null
          viewExpandedText: null
          tableType: "MANAGED_TABLE"
          temporary: false
    

     

    从上面的例子可以注意到以下几点:

    • 作为 Class Type 实例的每个实体都由唯一标识符 GUID 标识。此 GUID 由 Atlas 服务器在定义对象时生成,并在实体的整个生命周期内保持不变。在任何时间点,可以使用其 GUID 来访问该特定实体。

      • 在本示例中,默认数据库中的 "customers" 表由GUID "9ba387dd-fa76-429c-b791-ffc338d3c91f" 唯一标识

    • 实体具有给定类型,并且类型的名称与实体定义一起提供。

      • 在这个例子中,"customers" 表是一个 "hive_table"。

    • 此实体的值是所有属性名称及其在 hive_table 类型定义中定义的属性的值的映射。

    • 属性值将根据属性的元类型。

      • 基本元类型:整数,字符串,布尔值。例如。 'name'='customers','Temporary'='false'

      • 集合元类型:包含元类型的值的数组或映射。例如。 parameters = {"transient_lastDdlTime":"1466403208"}

      • 复合元类型:对于类,值将是与该特定实体具有关系的实体。例如。hive 表 "customers" 存在于称为 "default" 的数据库中。

    表和数据库之间的关系通过 "db" 属性捕获。因此,"db" 属性的值将是一个唯一标识 hive_db 实体的 GUID,称为 "default"对于实体的这个想法,我们现在可以看到 Class 和 Struct 元类型之间的区别。类和结构体都组成其他类型的属性。但是,类类型的实体具有 Id 属性(具有GUID值)并且可以从其他实体引用(如 hive_db 实体从 hive_table 实体引用)。 Struct 类型的实例没有自己的身份,Struct 类型的值是在实体本身内嵌入的属性的集合。

    Attributes

    我们已经看到属性在复合元类型(如 Class 和 Struct)中定义。 但是我们简单地将属性称为具有名称和元类型值。 然而, Atlas 中的属性还有一些属性,定义了与类型系统相关的更多概念。

    属性具有以下属性:

    name: string,
      dataTypeName: string,
      isComposite: boolean,
      isIndexable: boolean,
      isUnique: boolean,
      multiplicity: enum,
      reverseAttributeName: string
    

     

    以上属性具有以下含义:

    • name - 属性的名称

    • dataTypeName - 属性的元类型名称(本机,集合或复合)

    • isComposite - 是否复合

      • 此标志指示建模的一个方面。如果一个属性被定义为复合,它意味着它不能有一个生命周期与它所包含的实体无关。这个概念的一个很好的例子是构成 hive 表一部分的一组列。由于列在 hive 表之外没有意义,它们被定义为组合属性。

      • 必须在 Atlas 中创建复合属性及其所包含的实体。即,必须与 hive 表一起创建 hive 列。

    • isIndexable - 是否索引

      • 此标志指示此属性是否应该索引,以便可以使用属性值作为谓词来执行查找,并且可以有效地执行查找。

    • isUnique - 是否唯一

      • 此标志再次与索引相关。如果指定为唯一,这意味着为 Titan 中的此属性创建一个特殊索引,允许基于等式的查找。

      • 具有此标志的真实值的任何属性都被视为主键,以将此实体与其他实体区分开。因此,应注意确保此属性在现实世界中模拟独特的属性。

        • 例如,考虑 hive_table 的 name 属性。孤立地,名称不是 hive_table 的唯一属性,因为具有相同名称的表可以存在于多个数据库中。如果 Atlas 在多个集群中存储 hive 表的元数据,即使一对(数据库名称,表名称)也不是唯一的。只有集群位置,数据库名称和表名称可以在物理世界中被视为唯一。

    • multiplicity - 指示此属性是(必需的/可选的/还是可以是多值)的。如果实体的属性值的定义与类型定义中的多重性声明不匹配,则这将是一个约束违反,并且实体添加将失败。因此,该字段可以用于定义元数据信息上的一些约束。

    使用上面的内容,让我们扩展下面的 hive 表的属性之一的属性定义。让我们看看称为 "db" 的属性,它表示 hive 表所属的数据库:

      db:
          "dataTypeName": "hive_db",
          "isComposite": false,
          "isIndexable": true,
          "isUnique": false,
          "multiplicity": "required",
          "name": "db",
          "reverseAttributeName": null
    

    注意多重性的 "multiplicity" = "required" 约束。 如果没有 db 引用,则不能发送表实体。

      columns:
          "dataTypeName": "array<hive_column>",
          "isComposite": true,
          "isIndexable": true,
          “isUnique": false,
          "multiplicity": "optional",
          "name": "columns",
          "reverseAttributeName": null
    

    请注意列的 "isComposite" = true 值。通过这样做,我们指示定义的列实体应该始终绑定到它们定义的表实体。

    从这个描述和示例中,您将能够意识到属性定义可以用于影响 Atlas 系统要执行的特定建模行为(约束,索引等)。

    系统特定类型及其意义

    Atlas 提供了一些预定义的系统类型。我们在前面的章节中看到了一个例子(DataSet)。在本节中,我们将看到所有这些类型并了解它们的意义。

    Referenceable:此类型表示可使用名为 qualifiedName 的唯一属性搜索的所有实体。

    Asset:此类型包含名称,说明和所有者等属性。名称是必需属性(multiplicity = required),其他是可选的。可引用和资源的目的是为定型器提供在定义和查询其自身类型的实体时强制一致性的方法。拥有这些固定的属性集允许应用程序和用户界面基于约定基于默认情况下他们可以期望的属性的假设。

    Infrastructure:此类型扩展了可引用和资产,通常可用于基础设施元数据对象(如群集,主机等)的常用超类型。

    DataSet:此类型扩展了可引用和资产。在概念上,它可以用于表示存储数据的类型。在 Atlas 中,hive表,Sqoop RDBMS表等都是从 DataSet 扩展的类型。扩展 DataSet 的类型可以期望具有模式,它们将具有定义该数据集的属性的属性。例如, hive_table 中的 columns 属性。另外,扩展 DataSet 的实体类型的实体参与数据转换,这种转换可以由 Atlas 通过 lineage(或 provenance)生成图形。

     

    Process:此类型扩展了可引用和资产。在概念上,它可以用于表示任何数据变换操作。例如,将原始数据的 hive 表转换为存储某个聚合的另一个 hive 表的 ETL 过程可以是扩展过程类型的特定类型。流程类型有两个特定的属性,输入和输出。输入和输出都是 DataSet 实体的数组。因此,Process 类型的实例可以使用这些输入和输出来捕获 DataSet 的 lineage 如何演变。

    Search

    Atlas 支持以下 2 种方式搜索元数据:

    • Search using DSL

    • Full-text search

    Hive Atlas Bridge

    Hive Model

    默认 hive 建模在 org.apache.atlas.hive.model.HiveDataModelGenerator 中可用。 它定义以下类型:

      hive_db(ClassType) - super types [Referenceable] - attributes [name, clusterName, description, locationUri, parameters, ownerName, ownerType]
      hive_storagedesc(ClassType) - super types [Referenceable] - attributes [cols, location, inputFormat, outputFormat, compressed, numBuckets, serdeInfo, bucketCols, sortCols, parameters, storedAsSubDirectories]
      hive_column(ClassType) - super types [Referenceable] - attributes [name, type, comment, table]
      hive_table(ClassType) - super types [DataSet] - attributes [name, db, owner, createTime, lastAccessTime, comment, retention, sd, partitionKeys, columns, aliases, parameters, viewOriginalText, viewExpandedText, tableType, temporary]
      hive_process(ClassType) - super types [Process] - attributes [name, startTime, endTime, userName, operationType, queryText, queryPlan, queryId]
      hive_principal_type(EnumType) - values [USER, ROLE, GROUP]
      hive_order(StructType) - attributes [col, order]
      hive_serde(StructType) - attributes [name, serializationLib, parameters]
    

    使用唯一的限定名称创建和去重复实体。它们提供命名空间,也可以用于 query/lineage。请注意,dbName,tableName 和 columnName 应为小写。 clusterName 解释如下。

    • hive_db - attribute qualifiedName - <dbName>@<clusterName>

    • hive_table - attribute qualifiedName - <dbName>.<tableName>@<clusterName>

    • hive_column - attribute qualifiedName - <dbName>.<tableName>.<columnName>@<clusterName>

    • hive_process - attribute name - <queryString> - 小写的修剪查询字符串

    导入 Hive Metadata

    org.apache.atlas.hive.bridge.HiveMetaStoreBridge 使用 org.apache.atlas.hive.model.HiveDataModelGenerator 中定义的模型将 Hive 元数据导入 Atlas。 import-hive.sh 命令可以用来方便这一点。脚本需要 Hadoop 和 Hive 类路径 jar。 对于 Hadoop jar,请确保环境变量 HADOOP_CLASSPATH 已设置。另一种方法是将 HADOOP_HOME 设置为指向 Hadoop 安装的根目录同样,对于 Hive jar,将 HIVE_HOME 设置为 Hive 安装的根目录将环境变量 HIVE_CONF_DIR 设置为 Hive 配置目录复制 ${atlas-conf}/atlas-application.properties 到 hive conf 目录

      Usage: <atlas package>/hook-bin/import-hive.sh
    

    日志位于 ${atlas package}/logs/import-hive.log

    如果要在 kerberized 集群中导入元数据,则需要运行以下命令:

      <atlas package>/hook-bin/import-hive.sh -Dsun.security.jgss.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=[krb5.conf location] -Djava.security.auth.login.config=[jaas.conf location]
    

    Hive Hook

    Hive 在使用 hive hook 的 hive 命令执行上支持侦听器。 这用于在 Atlas 中使用 org.apache.atlas.hive.model.HiveDataModelGenerator 中定义的模型添加/更新/删除实体。 hive hook 将请求提交给线程池执行器,以避免阻塞命令执行。 线程将实体作为消息提交给通知服务器,并且服务器读取这些消息并注册实体。 按照 hive 设置中的这些说明为 Atlas 添加 hive hook :

    • Set-up atlas hook in hive-site.xml of your hive configuration:

      <property>
      <name>hive.exec.post.hooks</name>
      <value>org.apache.atlas.hive.hook.HiveHook</value>
      </property>
    
      <property>
      <name>atlas.cluster.name</name>
      <value>primary</value>
      </property>
    
    • Add 'export HIVE_AUX_JARS_PATH=<atlas package>/hook/hive' in hive-env.sh of your hive configuration

    • Copy <atlas-conf>/atlas-application.properties to the hive conf directory.

    在<atlas-conf> /atlas-application.properties中的以下属性控制线程池和通知详细信息:

     

    • atlas.hook.hive.synchronous - boolean,true来同步运行钩子。 默认false。 建议设置为false,以避免 hive 查询完成中的延迟。

    • atlas.hook.hive.numRetries - 通知失败的重试次数。 默认值 3

    • atlas.hook.hive.minThreads - 核心线程数。 默认值 5

    • atlas.hook.hive.maxThreads - 最大线程数。 默认值 5

    • atlas.hook.hive.keepAliveTime - 保持活动时间以毫秒为单位。 默认 10

    • atlas.hook.hive.queueSize - 线程池的队列大小。 默认 10000

    参考 Configuration 通知相关配置

    Column Level Lineage

    从 atlas-0.8-incubating 版本开始,在 Atlas 中捕获列 lineage

    Model

    • ColumnLineageProcess 类型是 Process 的子类

    • 这将输出列与一组输入列或输入表相关联

    • Lineage 还捕获 Dependency 的类型:当前的值是 SIMPLE,EXPRESSION,SCRIPT

      • SIMPLE依赖: 意味着输出列具有与输入相同的值

      • EXPRESSION依赖: 意味着输出列被输入列上的运行时中的一些表达式(例如Hive SQL表达式)转换。

      • SCRIPT依赖: 表示输出列由用户提供的脚本转换。

    • 在 EXPRESSION 依赖的情况下,表达式属性包含字符串形式的表达式

    • 由于 Process 链接输入和输出 DataSet,我们使 Column 成为 DataSet 的子类

    Examples

    对于下面的简单 CTAS:

      create table t2 as select id, name from T1
    

    lineage 为

     

    Extracting Lineage from Hive commands

    • HiveHook 将 HookContext 中的 LineageInfo 映射到 Column lineage 实例

    • Hive 中的 LineageInfo 为最终的 FileSinkOperator 提供 Column lineage ,将它们链接到 Hive 查询中的输入列

    NOTE

    在将 HIVE-13112 的补丁应用于 Hive 源之后,列级别 lineage 与 Hive 版本1.2.1配合使用

    Limitations

    • 由于数据库名,表名和列名在 hive 中不区分大小写,因此实体中的对应名称为小写。 因此,任何搜索 API 都应该在查询实体名称时使用小写

    • 以下 hive 操作由 hive hook 当前捕获

      • create database

      • create table/view, create table as select

      • load, import, export

      • DMLs (insert)

      • alter database

      • alter table (skewed table information, stored as, protection is not supported)

      • alter view

    Sqoop Atlas Bridge

    Sqoop Model

    默认的 Sqoop 建模在 org.apache.atlas.sqoop.model.SqoopDataModelGenerator 中可用。 它定义以下类型:

    sqoop_operation_type(EnumType) - values [IMPORT, EXPORT, EVAL]
      sqoop_dbstore_usage(EnumType) - values [TABLE, QUERY, PROCEDURE, OTHER]
      sqoop_process(ClassType) - super types [Process] - attributes [name, operation, dbStore, hiveTable, commandlineOpts, startTime, endTime, userName]
      sqoop_dbdatastore(ClassType) - super types [DataSet] - attributes [name, dbStoreType, storeUse, storeUri, source, description, ownerName]
    

    使用唯一的限定名称创建和去重复实体。 它们提供命名空间,也可以用于查询:sqoop_process - attribute name - sqoop-dbStoreType-storeUri-endTime sqoop_dbdatastore - attribute name - dbStoreType-connectorUrl-source

    Sqoop Hook

    Sqoop 添加了一个 SqoopJobDataPublisher,在完成导入作业后将数据发布到 Atlas。 现在 sqoopHook 只支持hiveImport。 这用于使用 org.apache.atlas.sqoop.model.SqoopDataModelGenerator 中定义的模型在 Atlas 中添加实体。 按照 sqoop 设置中的以下说明在 ${sqoop-conf}/sqoop-site.xml 中为 Atlas 添加 sqoop 钩子:

    • Sqoop Job publisher class. Currently only one publishing class is supported

    sqoop.job.data.publish.class org.apache.atlas.sqoop.hook.SqoopHook

    • Atlas cluster name

    atlas.cluster.name

    • 复制 ${atlas-conf}/atlas-application.properties 到 sqoop 的配置文件夹 ${sqoop-conf}/

    • Link ${atlas-home}/hook/sqoop/*.jar in sqoop libRefer Configuration for notification related configurations

    Limitations

    • 目前 sqoop hook 只支持 hiveImport 这一种 sqoop 操作

    Falcon Atlas Bridge

    Falcon Model

    默认的falcon建模在 org.apache.atlas.falcon.model.FalconDataModelGenerator. 它可以定义以下类型:

      falcon_cluster(ClassType) - super types [Infrastructure] - attributes [timestamp, colo, owner, tags]
      falcon_feed(ClassType) - super types [DataSet] - attributes [timestamp, stored-in, owner, groups, tags]
      falcon_feed_creation(ClassType) - super types [Process] - attributes [timestamp, stored-in, owner]
      falcon_feed_replication(ClassType) - super types [Process] - attributes [timestamp, owner]
      falcon_process(ClassType) - super types [Process] - attributes [timestamp, runs-on, owner, tags, pipelines, workflow-properties]
    

    为 falcon 进程定义的每个集群创建一个 falcon_process 实体。

    使用唯一的 qualifiedName 属性创建和去重复实体。 它们提供命名空间,也可以用于查询/沿袭。 唯一的属性是:

    • falcon_process - <process name>@<cluster name>

    • falcon_cluster - <cluster name>

    • falcon_feed - <feed name>@<cluster name>

    • falcon_feed_creation - <feed name>

    • falcon_feed_replication - <feed name>

    Falcon Hook

    Falcon 支持在 falcon 实体提交上的侦听器。 这用于在 Atlas 中使用 org.apache.atlas.falcon.model.FalconDataModelGenerator 中定义的模型添加实体。 hook 将请求提交给线程池执行器,以避免阻塞命令执行。 线程将实体作为消息提交给通知服务器,并且服务器读取这些消息并注册实体。

    • Add 'org.apache.atlas.falcon.service.AtlasService' to application.services in ${falcon-conf}/startup.properties

    • Link falcon hook jars in falcon classpath - 'ln -s atlas−home/hook/falcon/∗{falcon-home}/server/webapp/falcon/WEB-INF/lib/'

    • In ${falcon_conf}/falcon-env.sh, set an environment variable as follows:

      export FALCON_SERVER_OPTS="<atlas_home>/hook/falcon/*:$FALCON_SERVER_OPTS"
    

    The following properties in ${atlas-conf}/atlas-application.properties control the thread pool and notification details:

    • atlas.hook.falcon.synchronous - boolean, true to run the hook synchronously. default false

    • atlas.hook.falcon.numRetries - number of retries for notification failure. default 3

    • atlas.hook.falcon.minThreads - core number of threads. default 5

    • atlas.hook.falcon.maxThreads - maximum number of threads. default 5

    • atlas.hook.falcon.keepAliveTime - keep alive time in msecs. default 10

    • atlas.hook.falcon.queueSize - queue size for the threadpool. default 10000

    Refer Configuration for notification related configurations

    Limitations

    • 在 falcon 集群实体中,使用的集群名称应该跨诸如 hive,falcon,sqoop 等组件是统一的。如果与 ambari 一起使用,则应该使用 ambari 集群名称用于集群实体

    Storm Atlas Bridge

    Introduction

    Apache Storm 是一个分布式实时计算系统。 Storm 使得容易可靠地处理无界的数据流,为实时处理 Hadoop 对批处理所做的工作。 该过程实质上是节点的 DAG,其被称为 topology。

    Apache Atlas 是一个元数据存储库,支持端到端数据沿袭,搜索和关联业务分类。

    这种集成的目的是推动操作 topology 元数据以及基础数据源,目标,推导过程和任何可用的业务上下文,以便 Atlas 可以捕获此 topology 的 lineage。

    在此过程中有2个部分详述如下:

    • Data model to represent the concepts in Storm

    • Storm Atlas Hook to update metadata in Atlas

    Storm Data Model

    数据模型在 Atlas 中表示为 Types。 它包含 topology 图中各种节点的描述,例如 spouts 和 bolts 以及相应的生产者和消费者类型。

    在Atlas中添加以下类型。

    • storm_topology - 表示粗粒度拓扑。storm_topology 来自于 Atlas 过程类型,因此可用于通知 Atlas 关于 lineage。

    • 添加以下数据集 - kafka_topic,jms_topic,hbase_table,hdfs_data_set。 这些都来自Atlas Dataset类型,因此形成谱系图的端点。

    • storm_spout - 具有输出的数据生产者,通常为Kafka,JMS

    • storm_bolt - 具有输入和输出的数据使用者,通常为Hive,HBase,HDFS等。

    Storm Atlas hook自动注册依赖模型,如Hive数据模型,如果它发现这些是不为Atlas服务器所知。

    每个类型的数据模型在类定义org.apache.atlas.storm.model.StormDataModel中描述。

    Storm Atlas Hook

    当在 Storm 中成功注册新 topology 时,通知 Atlas。 Storm 在 Storm 客户端提供了一个钩子,backtype.storm.ISubmitterHook,用于提交一个 Storm topology。

    Storm Atlas hook 拦截 hook 后执行,并从 topology 中提取元数据,并使用定义的类型更新 Atlas。 Atlas 在org.apache.atlas.storm.hook.StormAtlasHook 中实现了 Storm 客户端 hook 接口。

    Limitations

    以下内容适用于集成的第一个版本。

    • 只有新的 topology 提交已注册到 Atlas,任何生命周期变化都不会反映在 Atlas 中。

    • 当为要捕获的元数据提交 Storm topology 时,Atlas 服务器需要在线。

    • hook 目前不支持捕获自定义 spouts 和 bolts 的 lineage。

    Installation

    Storm Atlas Hook 需要在客户端手动安装在 Storm 在:$ATLAS_PACKAGE/hook/storm

    Storm Atlas Hook 需要复制到 $STORM_HOME/extlib。 使用 storm 安装路径替换 STORM_HOME。

    在将安装了 atlas hook 到 Storm 后重新启动所有守护进程。

    Configuration

    Storm Configuration

    Storm Atlas Hook 需要在 Storm 客户端 $STORM_HOME/conf/storm.yaml 进行配置:

      storm.topology.submission.notifier.plugin.class: "org.apache.atlas.storm.hook.StormAtlasHook"
    

    还设置一个 "集群名称",将用作在 Atlas 中注册的对象的命名空间。 此名称将用于命名 Storm topology,spouts 和 bolts。

    其他对象(如 Dataset)应该理想地用生成它们的组件的集群名称来标识。 例如, Hive 表和数据库应该使用在 Hive 中设置的集群名称来标识。 如果 Hive 配置在客户端上提交的 Storm topology jar 中可用,并且在那里定义了集群名称,Storm Atlas hook 将选择此选项。 对于 HBase 数据集,这种情况类似。 如果此配置不可用,将使用在 Storm 配置中设置的集群名称。

      atlas.cluster.name: "cluster_name"
    

    在 $STORM_HOME/conf/storm_env.ini 中, 设置以下环境变量:

      STORM_JAR_JVM_OPTS:"-Datlas.conf=$ATLAS_HOME/conf/"
    

    将 ATLAS_HOME 指向 ATLAS 的安装目录.

    你也可以通过程序对 Storm 进行如下配置:

    Config stormConf = new Config();
      ...
      stormConf.put(Config.STORM_TOPOLOGY_SUBMISSION_NOTIFIER_PLUGIN,
      org.apache.atlas.storm.hook.StormAtlasHook.class.getName());
    

    容错和高可用

    简介

    Apache Atlas 使用各种系统并与其交互,为数据管理员提供元数据管理和数据 lineage。 通过适当地选择和配置这些依赖关系,可以使用 Atlas 实现高度的服务可用性。 本文档介绍了 Atlas 的高可用性支持状态,包括其功能和当前限制,以及实现此级别高可用性所需的配置。

    Atlas Web Service

    目前,Atlas Web 服务有一个限制,它一次只能有一个活动实例。在早期版本的 Atlas 中,可以配置和保持备份实例。但是,需要手动故障转移才能使此备份实例处于活动状态。

    从这个版本开始,Atlas 将支持带有自动故障转移的 主动/被动 配置中的 Atlas Web 服务的多个实例。这意味着用户可以在不同的物理主机上同时部署和启动 Atlas Web 服务的多个实例。其中一个实例将被自动选择为 "活动" 实例来为用户请求提供服务。其他人将自动被视为 "被动"。如果 "活动" 实例由于故意停止或由于意外故障而变得不可用,则其他实例之一将自动选为 "活动" 实例,并开始为用户请求提供服务。

    "活动" 实例是能够正确响应用户请求的唯一实例。它可以创建,删除,修改或响应元数据对象上的查询。 "被动" 实例将接受用户请求,但会使用 HTTP 重定向将其重定向到当前已知的 "活动" 实例。具体来说,被动实例本身不会响应对元数据对象的任何查询。但是,所有实例(包括主动和被动)都将响应返回有关该实例的信息的管理请求。

    当配置为高可用性模式时,用户可以获得以下操作优势:

    • 在维护间隔期间不间断服务:如果需要停用 Atlas Web 服务的活动实例进行维护,则另一个实例将自动变为活动状态并可以为请求提供服务。

    • 在意外故障事件中的不间断服务:如果由于软件或硬件错误,Atlas Web 服务的活动实例失败,另一个实例将自动变为活动状态并可以为请求提供服务。

    在以下小节中,我们将介绍为 Atlas Web 服务设置高可用性所需的步骤。 我们还描述了如何设计部署和客户端以利用此功能。 最后,我们描述一些底层实现的细节。

    Setting up the High Availability feature in Atlas

    设置高可用性功能必须满足以下先决条件。

    • 确保在一组计算机上安装 Apache Zookeeper(建议至少使用3台服务器进行生产)。

    • 选择 2 个或更多物理机以在其上运行 Atlas Web Service 实例。这些机器定义了我们称为 Atlas 的 "服务器集合"。

    要在 Atlas 中设置高可用性,必须在 atlas-application.properties 文件中定义一些配置选项。虽然配置项的完整列表在配置页中定义,但本节列出了几个主要选项。

    • 高可用性是 Atlas 的可选功能。因此,必须通过将配置选项 atlas.server.ha.enabled 设置为 true 来启用。

    • 接下来,定义标识符列表,为您为 Atlas Web Service 实例选择的每个物理机器分配一个标识符。这些标识符可以是简单的字符串,如id1,id2等。它们应该是唯一的,不应包含逗号。

    • 将这些标识符的逗号分隔列表定义为选项 atlas.server.ids 的值。

    • 对于每个物理机,请列出IP地址/主机名和端口作为配置 atlas.server.address.id 的值,其中 id 指的是此物理机的标识符字符串。

      • 例如,如果您选择了 2 台主机名为  和  的计算机,则可以如下定义配置选项:

          atlas.server.ids=id1,id2
          atlas.server.address.id1=host1.company.com:21000
          atlas.server.address.id2=host2.company.com:21000
        
    • 定义使用的 Zookeeper 为 Atlas 提供高可用性功能

      atlas.server.ha.zookeeper.connect=zk1.company.com:2181,zk2.company.com:2181,zk3.company.com:2181
    
    • 您可以查看为高可用性功能定义的其他配置选项,并根据需要在 atlas-application.properties 文件中进行设置。

    • 对于生产环境,Atlas 所依赖的组件也必须在高可用性模式下设置。 这将在以下部分中详细描述。 按照这些说明设置和配置它们。

    • 在选定的物理机器上安装 Atlas 软件。

    • 将使用上述步骤创建的 atlas-application.properties 文件复制到所有计算机的配置目录。

    • 启动相关组件。

    • 启动 Atlas Web 服务的每个实例。

    要验证高可用性是否正常工作,请在安装了 Atlas Web Service 的每个实例上运行以下脚本。

      $ATLAS_HOME/bin/atlas_admin.py -status
    

    此脚本可以打印以下值之一作为响应:

    • ACTIVE:此实例处于活动状态,可以响应用户请求。

    • PASSIVE:此实例为 PASSIVE。它会将它收到的任何用户请求重定向到当前活动实例。

    • BECOMING_ACTIVE:如果服务器正在转换为 ACTIVE 实例,则将打印此消息。在此状态下,服务器无法处理任何元数据用户请求。

    • BECOMING_PASSIVE:如果服务器正在转换为 PASSIVE 实例,则将打印此消息。在此状态下,服务器无法处理任何元数据用户请求。

    在正常操作情况下,只有其中一个实例应该打印 ACTIVE 值作为对脚本的响应,而其他实例将打印 PASSIVE。

    配置客户端以使用高可用性功能

    Atlas Web 服务可以通过两种方式访问:

    • 使用 Atlas Web UI:这是一个基于浏览器的客户端,可用于查询存储在Atlas中的元数据。

    • 使用 Atlas REST API:由于 Atlas 公开了一个 RESTful API,因此可以使用任何标准的 REST 客户端,包括其他应用程序中的库。事实上,Atlas 附带了一个名为 AtlasClient 的客户端,可以用作创建 REST 客户端访问的示例。

    为了利用客户端中的高可用性功能,可以有两个选项。

    使用中间代理

    启用高可用性访问 Atlas 的最简单的解决方案是安装和配置一些中间代理,其具有基于状态透明地切换服务的能力。一个这样的代理解决方案是 HAProxy。

    下面是一个可以使用的 HAProxy 配置示例。注意,这只是为了说明,而不是作为推荐的生产配置。为此,请参阅 HAProxy文档以获取相应的说明。

      frontend atlas_fe
        bind *:41000
        default_backend atlas_be
      
      backend atlas_be
        mode http
        option httpchk get /api/atlas/admin/status
        http-check expect string ACTIVE
        balance roundrobin
        server host1_21000 host1:21000 check
        server host2_21000 host2:21000 check backup
      
      listen atlas
        bind localhost:42000
    

    以上配置绑定 HAProxy 侦听端口 41000 传入客户端连接。然后根据 HTTP 状态检查将连接路由到主机 host1 或 host2 中的任一个。状态检查是使用 REST URL / api / atlas / admin / status 上的 HTTP GET 完成的,只有当 HTTP 响应包含字符串ACTIVE 时,才认为成功。

    使用活动实例的自动检测

    如果不想设置和管理单独的代理,则使用高可用性功能的另一个选项是构建能够检测状态和重试操作的客户端应用程序。在这样的设置中,可以使用形成集合的所有 Atlas Web 服务实例的 URL 启动客户端应用程序。然后,客户端应调用其中每一个上的 REST URL / api / atlas / admin / status,以确定哪个是活动实例。来自 Active 实例的响应将具有 {Status:ACTIVE}的形式。此外,当客户端在操作过程中遇到任何异常时,它应该再次确定哪些剩余的URL是活动的并重试该操作。

    Atlas 附带的 AtlasClient 类可以用作一个示例客户端库,它实现了使用集合并选择正确的Active服务器实例的逻辑。

    Atlas 中的实用程序(如quick_start.py和import-hive.sh)可以配置为使用多个服务器URL运行。当在此模式下启动时,AtlasClient 自动选择并使用当前活动实例。如果在之间设置了代理,则可以在运行 quick_start.py 或 import-hive.sh 时使用其地址。

    实现 Atlas 高可用

    Atlas 高可用性工作在主 JIRA ATLAS-510 下进行跟踪。根据其提交的 JIRA 具有关于高可用性功能如何实现的详细信息。在高级别可以调出以下几点:

    • 活动实例的自动选择以及到新的活动实例的自动故障转移通过领导者选择算法发生。

    • 对于领导选举,我们使用 Apache Curator 的 Leader Latch Recipe。

    • Active 实例是唯一一个在后端存储中初始化,修改或读取状态以保持它们一致的实例。

    • 此外,当实例被选为活动时,它会刷新后端存储中的任何缓存信息以获取最新信息。

    • servlet 过滤器确保只有活动的实例服务用户请求。如果被动实例接收到这些请求,它会自动将它们重定向到当前活动实例。

    Metadata Store

    如上所述,Atlas 使用 Titan 来存储它管理的元数据。默认情况下,Atlas 使用独立的 HBase 实例作为 Titan 的后备存储。为了为元数据存储提供 HA,我们建议将 Atlas 配置为使用分布式 HBase 作为 Titan 的后备存储。这意味着您可以从 HBase 提供的 HA 保证中受益。为了将 Atlas 配置为在 HA 模式下使用 HBase,请执行以下操作:

    • 选择在HA模式中设置的现有 HBase 集群以在 Atlas(OR)中配置在 HA模式 下设置新的 HBase 集群。

      • 如果为 Atlas 设置 HBase,请按照 Installation Steps 中列出的用于设置 HBase 的说明进行操作。

    • 我们建议在使用 Zookeeper 协调的不同物理主机上的集群中使用多个 HBase 主机(至少2个),以提供 HBase的 冗余和高可用性。

      • 有关在 atlas.properties 中配置的选项的 Configuration page ,请参考配置页面,以便使用 HBase 设置 Atlas。

    Index Store

    如上所述,Atlas 通过 Titan 索引元数据以支持全文搜索查询。 为了为索引存储提供 HA,我们建议将 Atlas 配置为使用 Solr作为 Titan 的后备索引存储。 为了将 Atlas 配置为在 HA 模式下使用 Solr,请执行以下操作:

    • 在 HA 模式下选择现有的 SolrCloud 群集设置以在 Atlas(OR)中配置设置新的 SolrCloud 群集。

      • 确保 Solr 在至少 2 个物理主机上启动以实现冗余,并且每个主机运行 Solr 节点。

      • 我们建议将冗余数设置为至少 2。

    • 创建 Atlas 所需的 SolrCloud 集合,如安装步骤中所述

    • 请参阅配置页面以了解在 atlas.properties 中配置的选项,以使用 Solr 设置 Atlas。

    Notification Server

    来自 Hook 的元数据通知事件通过写入到名为 ATLAS_HOOK 的 Kafka topic 发送到 Atlas 。类似地,从 Atlas 到其他集成组件(如Ranger)的事件写入名为 ATLAS_ENTITIES 的 Kafka topic。由于 Kafka 会保留这些消息,即使消费者在发送事件时失败,事件也不会丢失。此外,我们建议 Kafka 也设置容错,以便它具有更高的可用性保证。为了配置 Atlas 在 HA 模式下使用 Kafka,请执行以下操作:

    • 选择在 HA 模式中设置的现有 Kafka 集群以在 Atlas(OR)中配置设置新的 Kafka 集群。

    • 我们建议在不同物理主机上的群集中有多个 Kafka 代理,它们使用 Zookeeper 协调,以提供 Kafka 的冗余和高可用性。

      • 设置至少 2 个物理主机以实现冗余,每个托管一个 Kafka 代理。

    • 为 Atlas 使用设置 Kafka 主题:

      • ATLAS 主题的分区数应设置为1(numPartitions)

      • 确定 Kafka 主题的副本数量:将此值设置为至少 2 以进行冗余。

      • 运行以下命令:

        $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper <list of zookeeper host:port entries> --topic ATLAS_HOOK --replication-factor <numReplicas> --partitions 1
        $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper <list of zookeeper host:port entries> --topic ATLAS_ENTITIES --replication-factor <numReplicas> --partitions 1
        Here KAFKA_HOME points to the Kafka installation directory.
      
      • 在 atlas-application.properties 中进行如下配置:

        atlas.notification.embedded=false
        atlas.kafka.zookeeper.connect=<comma separated list of servers forming Zookeeper quorum used by Kafka>
        atlas.kafka.bootstrap.servers=<comma separated list of Kafka broker endpoints in host:port form> - Give at least 2 for redundancy.
      

    Known Issues

    • 如果托管 Atlas 'titan' HTable 的 HBase region servers 停机,Atlas 将无法在 HBase 恢复联机之前从 HBase 存储或检索元数据。

     

     

    展开全文
  • Atlas

    2018-12-05 17:27:17
    Atlas
  • Atlas安装部署

    2020-10-22 15:15:17
    环境要求: JDK8+Hadoop2+Maven3+Zookeeper3+Hbase2+Solr5 这些组件都要安装。 下载:http://atlas.apache.org/#/Downloads ...mv apache-atlas-2.0.0-sources atlas cd atlas export MAVEN_OPTS="-Xms2g -Xmx
  • 学习atlas有一段时间了,培训讲座也听了些,但是具体没有使用过,准备写一个atlas学习系列,从简单的开始,逐一学习总结一下atlas的 用法,本文介绍如何使用atlas来支持简单的无刷新效果。主要目的是体会一下atlas...
  • 华为Atlas

    千次阅读 2019-06-17 23:21:03
    似乎一夜之间,人工智能(AI)渗透进了我们的生活,这种渗透力无疑是革命性的。看新闻或者网购时,它根据算法推送你喜欢的内容;出行时,它通过大数据避开所有拥堵的道路;企业办公时,它又化身为智能化与高效率的...
  • 使用Apache atlas api创建血缘关系

    千次阅读 2018-05-20 22:34:09
    使用Apache atlas api创建血缘关系
  • Apache Atlas UI功能详解

    千次阅读 2018-08-21 17:20:35
    Apache Atlas UI 功能详解 ApacheAtlasUI功能包括3部分:SEARCH、CLASSIFICATION、GLOSSARY SEARCH Search模块包括Base Search、Advanced Search两种Entity查询功能和Entity创建功能。 Base Search 查询条件...
  • Atlas系列-Apache Atlas 独立部署和HA

    千次阅读 热门讨论 2018-08-25 10:16:53
    用编译集成的hbase和sorl部署的apache atlas请参见之前的文章:Atlas系列-编译部署 此次介绍的是 集成以独立部署好的 kakfa,solr,hbase的部署方式 本次部署包含一下六部分: apache atlas 独立部署编译 solr...
  • 元数据管理工具atlas初探

    万次阅读 2018-05-31 16:50:02
    元数据管理工具atlas初探 安装: Ambari添加服务(略) Hive配置: 将atlas主节点/usr/hdp/2.6.3.0-235/atlas/hook拷贝到其他节点。 自定义hive-env,HIVE_AUX_JARS_PATH =/usr/hdp/2.6.3.0-235/atlas/hook...
  • 解析atlas文件

    万次阅读 2014-10-30 00:00:57
    有些引擎比如libgdx打包图片资源时,是atlas。 想获取资源就要解析了。把这个文件放到要解析的资源文件夹下面编译输入要解析的文件名就可以了。 # -*- coding: utf-8 -*- import os import sys import os.path ...
  • Unity2017新功能Sprite Atlas详解

    万次阅读 2018-07-09 23:54:00
    Sprite Atlas(精灵图集)Sprite Atlas 针对现有的图集打包系统Sprite Packer在性能和易用性上的不足,进行了全面改善。除此之外,相比Sprite Packer,Sprite Atlas将对精灵更多的控制权交还给用户。由用户来掌控...
  • 参考资料:https://mp.weixin.qq.com/s/yo3XiKpi6lJNH16MsJ-KUw在Unity 2017.1后才能使用Sprite Atlas 创建图集选中需要帮你设置打包图集的Edit ,Edit-》Project Settings-》Edit-》Mode 选择Always Enabled点击+...
  • Atlas 中文文档

    千次阅读 2018-04-16 13:53:24
    此篇博客是为初学者开发Atlas提供中文版文档,在安装Atlas后,会自动生成英文版文档,为了便于初学者更好地理解Atlas,特将此翻译成中文版。下面为部分目录,资源连接点击打开链接...
  • apache atlas 2.0 详细安装手册

    千次阅读 2020-02-16 19:52:28
    1.1 atlas编译打包 l 首先,在官网下载源码包 http://atlas.apache.org/ l 上传到linux,解压 [root@h2 ~]# tar -zxf apache-atlas-2.0.0-sources.tar.gz -C /opt/app/ l [可选]步骤:为maven配置添加国内下载镜像...
  • 大数据治理系统框架Apache Atlas实践

    万次阅读 多人点赞 2017-09-23 23:14:15
    大数据元数据和数据管理框架Apache Atlas实践今天技术小伙伴占卫同学分享了Apache Atlas元数据管理实践,被atlas的强大的血缘关系管理能力震撼,以下为本次分享内容:•Apache Atlas简介•Apache Atlas架构•Titan...
  • Apache Atlas安装部署

    千次阅读 2018-07-24 15:09:00
    一、下载源码 源码地址:http://mirrors.tuna.tsinghua.edu.cn/apache/atlas/1.0.0/apache-atlas-1.0.0-sources.tar.gz  二、源码编译 tar -zxf apache-atlas-1.0.0-sources....cd apache-atlas-sources-1.0.0/ ...
1 2 3 4 5 ... 20
收藏数 28,287
精华内容 11,314
关键字:

atlas