20. π¬ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Apache Atlas
2021-12-06
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Apache Atlas’Π° ΠΊ Hadoop’Ρ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ Π² ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
1. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· Hive
1.1. ΠΠ° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΡΠΎΠ»ΡΡ HDFS Gateway, Π² ΡΠ²ΠΎΡΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ csv-ΡΠ°ΠΉΠ» ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² HDFS:
TESTFILENAME="atlas25.csv"
cat << EOF > ${TESTFILENAME}
1,Hive Hook
2,HBase Hook
3,Spark Hook
EOF
hdfs dfs -put ${TESTFILENAME}
1.2. ΠΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΡΠΎ Π°ΠΊΠΊΠ°ΡΠ½Ρ hive, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π² ΡΠ°Π±Π»ΠΈΡΡ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π² Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ + ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΄Π°ΡΠΌ ΠΏΡΠ°Π²Π°:
HDFSHOMEDIR="/user/dmr"
hdfs dfs -setfacl -m user:hive:rwx ${HDFSHOMEDIR}
hdfs dfs -setfacl -m user:hive:rw ${TESTFILENAME}
1.3. ΠΠ° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΡΠΎΠ»ΡΡ ‘Hive Gateway’ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ Apache Hive Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ beeline
:
$ beeline
beeline> !connect jdbc:hive2://dev-aux110p.test2.lan:10000/;ssl=true;sslTrustStore=/usr/java/jdk1.8.0_181-cloudera/jre/lib/security/jssecacerts
Enter username for jdbc:hive2://dev-aux110p.test2.lan:10000/: dmr
Enter password for jdbc:hive2://dev-aux110p.test2.lan:10000/: ******************
0: jdbc:hive2://dev-aux110p.test2.lan:100> show databases;
+-------------------+
| database_name |
+-------------------+
| michael_test |
| default |
| dmrtest |
+-------------------+
1.4. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
0: jdbc:hive2://dev-aux110p.test2.lan:100> create database atlas25;
1.5. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Hive-ΡΠ°Π±Π»ΠΈΡΡ:
0: jdbc:hive2://dev-aux110p.test2.lan:100> CREATE TABLE IF NOT EXISTS atlas25.atlas25 (Num int, HookName String)
COMMENT 'Atlas function check'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
1.6. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΡΠ°Π±Π»ΠΈΡΡ:
0: jdbc:hive2://dev-aux110p.test2.lan:100> LOAD DATA INPATH 'atlas25.csv' OVERWRITE INTO TABLE atlas25.atlas25;
1.7. Π Apache Atlas’Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ atlas25 ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
1.8. Π©ΡΠ»ΠΊΠ½ΡΠ² ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ‘atlas25’ Ρ ΡΠΈΠΏΠΎΠΌ ‘hive_table’, Π½Π° ΠΎΡΠΊΡΡΡΠ΅ΠΉΡΡ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Lineage, Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ “Π»ΠΈΠ½Π΅ΠΉΠΊΡ”:
1.9. ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Hive Π² Atlas ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ.
2. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· HBase
2.1. ΠΠ° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΡΠΎΠ»ΡΡ HDFS Gateway, Π² ΡΠ²ΠΎΡΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ csv-ΡΠ°ΠΉΠ» ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² HDFS:
TESTFILENAME="atlas26.csv"
cat << EOF > ${TESTFILENAME}
1,Hive Hook
2,HBase Hook
3,Spark Hook
EOF
hdfs dfs -put ${TESTFILENAME}
2.2. ΠΠ° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΡΠΎΠ»ΡΡ ‘HBase Gateway’ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ kerberos-ΡΠΈΠΊΠ΅Ρ ΠΈ ΡΠΎΠ·Π΄Π°ΡΠΌ HBase-ΡΠ°Π±Π»ΠΈΡΡ ‘atlas26’:
kinit dmr
echo "create 'atlas26', 'n', 'hook'" | hbase shell
2.3. ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° atlas26.csv
Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ HBase-ΡΠ°Π±Π»ΠΈΡΡ:
$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator=',' \
-Dimporttsv.columns=HBASE_ROW_KEY,n,hook atlas26 /user/dmr/atlas26.csv
2.4. ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°Π±Π»ΠΈΡΡ (Π²ΠΏΡΠΎΡΠ΅ΠΌ ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ):
$ echo "scan 'atlas26'" | hbase shell
...
scan 'atlas26'
ROW COLUMN+CELL
1 column=n:, timestamp=1638889043225, value=Hive Hook
2 column=n:, timestamp=1638889043225, value=HBase Hook
3 column=n:, timestamp=1638889043225, value=Spark Hook
3 row(s)
Took 0.7221 seconds
2.5. Π Apache Atlas’Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ atlas26 ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
2.6. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Hive, HBase Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΡΠ»Π°ΡΡ ΡΠ°ΠΉΠ»-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΡΡΠΎΠΌΡ “ΠΠΈΠ½Π΅ΠΉΠΊΠ°” ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΏΡΡΡΠ°:
2.7. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· HBase Π² Apache Atlas ΠΏΠΎΡΡΡΠΏΠ°ΡΡ.
3. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· Spark
ΠΡΠΈ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ.