Atlas2.2.0編譯、安裝及使用(集成ElasticSearch,導入Hive數據)

来源:https://www.cnblogs.com/yutianzixia/archive/2022/05/11/16257916.html
-Advertisement-
Play Games

在數倉項目中,我們常常會選擇Apache Atlas進行數據的治理。本文結合筆者在生產環境中遇到的常見問題及解決方法,整合出完整的Atlas編譯、部署及使用過程。 ...


1、編譯階段

組件信息:

組件名稱 版本
Atals 2.2.0
HBase 2.2.6
Hive 3.1.2
Hadoop 3.1.1
Kafka 2.11_2.4.1
Zookeeper 3.6.2
ElasticSearch 7.12.1


架構: x86 (已知arm編譯時會報node-sass缺少的問題,git上沒有對應arm架構的包)
操作系統:CentOS 7.6

說明:
1、編譯不包括其內嵌的HBase和Solr,只編譯Atlas本身
2、下麵的步驟中有些並非編譯過程報錯,而是具體使用中或導入hive元數據時報的錯,提前修改

步驟:
step1:官網下載Atlas-2.2.0源碼,解壓

step2:配個國內源。可以在maven的conf目錄下settings.xml里配置,也可以在項目的pom.xml里配置,這裡貼阿裡源做參考

step3:提前從Here下一個nodejs的包放到maven倉庫下,目錄參考
$MAVEN_REPOSITORY/com/github/eirslett/node/12.16.0/node-12.16.0-linux-x64.tar.gz

註意下下來的包名字叫node-v12.16.0-linux-x64.tar.gz,放在maven倉庫里的時候要把裡面的v去掉。如果不提前下,編譯時候自己下載的速度很慢

step4:主pom.xml里添加下麵兩個依賴

                        <dependency>
                <groupId>org.restlet.jee</groupId>
                <artifactId>org.restlet</artifactId>
                <version>2.4.0</version>
            </dependency>
            
            <dependency>
                <groupId>org.restlet.jee</groupId>
                <artifactId>org.restlet.ext.servlet</artifactId>
                <version>2.4.0</version>
            </dependency>


step5:修改./intg/src/main/java/org/apache/atlas/ApplicationProperties.java
註釋掉line 365 LOG.info("Setting " + SOLR_WAIT_SEARCHER_CONF + " = " + getBoolean(SOLR_WAIT_SEARCHER_CONF));

這步是因為我們採用es作為查詢引擎,solr的相關配置都會註釋掉,而這行調用會在導入hive元數據的時候報錯


step6:把項目里的jsr311-api改成javax.ws.rs-api  (6處,可以直接在項目目錄下grep -rn搜), 並修改主pom.xmljsr.version為2.0.1

這步主要影響六個支持的組件的數據導入及後續,包括hbase、hive、sqoop、impala、falcon、storm
主要原因:jsr311-api包中javax.ws.rs.core包中沒有Link類,而Atlas以HBase作為元數據存儲,HBase本身使用的為javax.ws.rs-api包中的core包,其中有Link類,所以調用腳本導入數據時會報以下錯誤

step7:執行編譯命令mvn clean package -DskipTests -Drat.skip=true -Pdist

編譯後的包在./distro/target目下,server包即為Atlas部署包,bin包為集成了常用hook(如hbase-hook)的部署包

2、部署階段

前置條件:
集群內有正常運行且可用的hadoop、hive、hbase、kafka、zk、es,且atlas所在節點必須有hbase及hive的配置文件目錄

步驟:
step1:解壓atlas-bin包(這裡以/data/apps為例,順便改個名

tar -zxvf apache-atlas-2.2.0-bin.tar.gz -C /data/apps
mv apache-atlas-2.2.0 atlas-2.2.0


step2:解壓hook包(這裡以hive-hook為例),並拷貝內容到atlas安裝目錄下

tar -zxvf apache-atlas-2.2.0-hive-hook.tar.gz -C /data/apps/
/usr/bin/cp /data/apps/apache-atlas-hive-hook-2.2.0/* /data/apps/atlas-2.2.0/


step3:修改atlas配置文件(有的配置是已有的,修改即可;有的配置沒有,需要加)
atlas-application.properties:

     #atlas server config
             atlas.rest.address=http://atlas-ip:21000
        atlas.server.run.setup.on.start=false
      
     #hbase config
        atlas.audit.hbase.tablename=apache_atlas_entiry_audit
        atuls.audit.zookeeper.session.timeout.ms=1000
        atlas.audit.hbase.zookeeper.quorum=zk地址
             atlas.graph.storage.hostname=zk地址
        
     #solr config
      #註釋掉所有和solr相關的配置項
        
     #es config
              atlas.graph.index.search.backend=elasticsearch
        atlas.graph.index.search.hostname=es-ip:9200
        atlas.graph.index.search.elasticsearch.client-only=true
        atlas.graph.index.search.elasticsearch.http.auth.type=basic
        atlas.graph.index.search.elasticsearch.http.auth.basic.username=elastic
        atlas.graph.index.search.elasticsearch.http.auth.basic.password=Cestc!666
      
    #kafka config
             atlas.nofification.embedded=false
        atlas.kafka.data=/data/log/kafka
        atlas.kafka.zookeeper.connect=zk地址/kafkaCluster
        atlas.kafka.bootstrap.servers=kafka地址
      
    #hive config
             atlas.hook.hive.numRetries=3
        atlas.hook.hive.queueSize=10000
        atlas.cluster.name=primary

atlas-env.sh:

        export HBASE_CONF_DIR=/data/apps/hbase-2.2.6/conf

atlas-log4j.xml:

        #去掉org.apache.log4j.DailyRollingFileAppender一塊的註釋來暴露性能指標


step4:將atlas-application.properties分發到所有hive所在節點的hive/conf目錄下

step5:分發hive-hook目錄到hive節點下,並修改hive配置文件

ssh hive-node "mkdir -p /data/apps/atlas-2.2.0/hook"
scp -r /data/apps/atlas-2.2.0/hook/hive hive-node:$PWD

hive-site.xml

           <property>
            <name>hive.exec.post.hooks</name>
            <value>org.apache.atlas.hive.hook.HiveHook</value>
        </property>

hive-env.sh

       export HIVE_AUX_JARS_PATH=/data/apps/atlas-2.2.0/hook/hive


step6:重啟Hive

step7:調用atlas啟動腳本啟動服務

$ATLAS_HONE/bin/atlas_start.py

啟動過程如下圖所示

該過程會耗時較久,包含index創建、數據的初始化等操作
此時可以跟一下atlas的啟動日誌,直到日誌不再刷新,再lsof或netstat查一下21000是否已經監聽了,如已存在,則打開瀏覽器輸入ip:21000登錄atlas頁面

千萬不要相信他提示的Apache Atlas Server started!!!和jps顯示的Atlas進程,因為啟動腳本超過一定時間後一定會報成功,但此時21000埠還未被監聽,服務是不可用的,真正可用還是以21000被成功監聽,可以進到Atlas登錄頁面為準

3、使用階段

說明:
此處我們以Hive的元數據導入及使用為例,其它數據源使用類似

步驟:
step1:進入atlas安裝目錄下,執行hook-bin中的import-hive.sh腳本

$ATLAS_HOME/hook-bin/import-hive.sh 

執行後如下圖

過程中會提示輸入atlas用戶名和密碼,都輸入admin即可
成功後會提示

該過程時間視hive現有數據量大小而定

step2:登錄Atlas Web頁面
打開瀏覽器輸入ip:21000登錄atlas頁面


登錄後如下圖

此時可以點擊右上角小圖標

查看總體數據情況

查看所有hive表

隨便點擊一個表查看詳情

可以清楚地看到這個表的各項信息、欄位及血緣圖等

我們也可以通過左側搜索欄檢索過濾想要查找的項

以上就是我在生產環境中部署Atlas-2.2.0並集成es、hive的過程,使用時可以點擊頁面操作,也可通過調用Rest API集成到自己系統里用

本文首發於博客園,作者榆天紫夏,希望對大家有所幫助。原文地址https://www.cnblogs.com/yutianzixia/p/16257916.html。如有遺漏或問題歡迎補充指正

本文來自博客園,作者:榆天紫夏,轉載請註明原文鏈接:https://www.cnblogs.com/yutianzixia/p/16257916.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.第一個shell vi first.sh !/bin/bash 作者:Arya 編寫時間:2022-04-22 功能:this is my first blog! echo "this is my first shell!" 2.crond服務 以守護進程方式在無需人工干預的情況下來處理著一系列 ...
  • https://www.cnblogs.com/yeungchie/ XFCE是一款輕量級 Linux 桌面,當前版本已經將所有部件從 GTK2 更新到 GTK3,從D-Dbus Glib更新到GDBus,大部分組件支持Object Introspection(簡稱 GI,用於產生與解析 C 程式庫 ...
  • 為什麼要使用Docusaurus Docusaurus 是 Facebook 專門為開源項目開發者提供的一款易於維護的靜態網站創建工具,使用 Markdown 即可更新網站。構建一個帶有主頁、文檔、API、幫助以及博客頁面的靜態網站,只需5分鐘。 Docusaurus 是一個靜態站點生成器。它構建了 ...
  • cat命令詳解 用法 功能 cat filename 獲取文件內容 cat file1 file2 > newfile 將file2的內容追加到file1,生成新文件newfile,但不會刪除原文件 cat > file 創建並編輯file,若file存在,則原文件內容被覆蓋, 按ctrl c 或者 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 第一次在Linux雲伺服器上部署前後端分離項目,查了很多資料和視頻,踩了許多坑。成功實現部署若依的前後端分離項目後,想記錄一下前後端部署的過程,供學習的小伙伴參考。 1.環境準備 一定要在開始前先準備好以下工具和環境(可以上網查找安裝的方法),後 ...
  • 引言 我們在定時任務中經常能接觸到cron表達式,但是在寫cron表達式的時候我們會遇到各種各樣版本的cron表達式,比如我遇到過5位、6位甚至7位的cron表達式,導致我一度搞混這些表達式。更嚴重的是,當我們沒有準確寫出cron表達式時,會出現定時任務一直沒有執行,或者定時任務執行太頻繁的糟糕情況 ...
  • 一、Flink中的狀態 官方文檔 有狀態的計算是流處理框架要實現的重要功能,因為稍複雜的流處理場景都需要記錄狀態,然後在新流入數據的基礎上不斷更新狀態。下麵的幾個場景都需要使用流處理的狀態功能: 數據流中的數據有重覆,想對重覆數據去重,需要記錄哪些數據已經流入過應用,當新數據流入時,根據已流入過的數 ...
  • 這邊文章聊聊自己對數據治理開發實踐的一些思路,就是聊聊怎麼開始去做數據治理這件事情。說起數據治理,有時候雖然看了很多文章,看了很多的介紹,瞭解數據治理的理論,但是實際上需要我們去搞的時候,就會踩很多的坑。這裡記一下自己做數據治理的一些思路,做做筆記,也分享給需要的同學。 當然,想要做數據治理,想要學 ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...