sqoop1.4.6 to hbase1.2 in hue4.1躺坑總結

1、sqoop1.4.6 to hbase1.2 in hue4.1html

CM安裝 cdh 5.15.x,因想用簡單的sqoop1因此parce裝的sqoop1 client,經測試報:SQOOP_CONF_DIR找不到,mysql drive no find ,檢查發現安裝目錄和classpath都有,依然如此,後找文檔說是cdh只支持sqoop2,sqoop1須要手配置 oozie/libext並上傳到hdfs下,連接https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_oozie_sqoop_jdbc.html,翻譯以下 :java

在Oozie中使用Sqoop動做

Sqoop 1不附帶第三方JDBC驅動程序。您必須單獨下載它們並將它們保存到在/ var / lib中/ sqoop /Oozie服務器上的目錄。有關更多信息,請參閱使用命令行設置Apache Sqoopmysql

 

建議

  • Cloudera建議您不要將Sqoop CLI命令與Oozie Shell Action一塊兒使用。此類部署不可靠,而且在升級和配置更改期間容易中斷。web

  • 要將數據導入Hive,請使用Sqoop Action和Hive2 Action的組合。
    • SQoop Action簡單地將數據攝入HDFS。
    • Hive2 Action將數據從HDFS加載到Hive中。

部署和配置Oozie Sqoop1操做JDBC驅動程序

在開始此過程以前,請確認您的Sqoop1 JDBC驅動程序是否存在 在/ var / lib中/ sqoop。sql

SSH到Oozie服務器主機並執行如下命令在HDFS上部署和配置驅動程序:shell

cd / var / lib / sqoop sudo -u hdfs hdfs dfs -mkdir / user / oozie / libext sudo -u hdfs hdfs dfs -chown oozie:oozie / user / oozie / libext sudo -u hdfs hdfs dfs -put /opt/cloudera/parcels/SQOOP_NETEZZA_CONNECTOR/sqoop-nz-connector*.jar / user / oozie / libext / sudo -u hdfs hdfs dfs -put /opt/cloudera/parcels/SQOOP_TERADATA_CONNECTOR/lib/*.jar / user / oozie / libext / sudo -u hdfs hdfs dfs -put /opt/cloudera/parcels/SQOOP_TERADATA_CONNECTOR/sqoop-connector-teradata*.jar / user / oozie / libext / sudo -u hdfs hdfs dfs -put /var/lib/sqoop/*.jar / user / oozie / libext / sudo -u hdfs hdfs dfs -chown oozie:oozie /user/oozie/libext/*.jar sudo -u hdfs hdfs dfs -chmod 755 /user/oozie/libext/*.jar sudo -u hdfs hdfs dfs -ls / user / oozie / libext #[/ user / oozie / libext的樣本內容] -rwxr-xr-x 3 oozie oozie 959987 2016-05-29 09:58 /user/oozie/libext/mysql-connector-java.jar -rwxr-xr-x 3 oozie oozie 358437 2016-05-29 09:58 /user/oozie/libext/nzjdbc3.jar -rwxr-xr-x 3 oozie oozie 2739670 2016-05-29 09:58 /user/oozie/libext/ojdbc6.jar -rwxr-xr-x 3 oozie oozie 3973162 2016-05-29 09:58 /user/oozie/libext/sqoop-connector-teradata-1.5c5.jar -rwxr-xr-x 3 oozie oozie 41691 2016-05-29 09:58 /user/oozie/libext/sqoop-nz-connector-1.3c5.jar -rwxr-xr-x 3 oozie oozie 2405 2016-05-29 09:58 /user/oozie/libext/tdgssconfig.jar -rwxr-xr-x 3 oozie oozie 873860 2016-05-29 09:58 /user/oozie/libext/terajdbc4.jar

配置Oozie Sqoop1操做工做流JDBC驅動程序

使用如下步驟配置Oozie Sqoop1操做工做流:數據庫

  1. 確認HDFS中存在Sqoop1 JDBC驅動程序。爲此,請經過SSH鏈接到Oozie Server主機並運行如下命令:
    sudo -u hdfs hdfs dfs -ls / user / oozie / libext
  2. 在Oozie中配置如下Oozie Sqoop1 Action工做流變量 job.properties 文件以下:
    oozie.use.system.libpath = true oozie.libpath = / user / oozie / libext

然而並沒有卵用,後國外社區 上有說driver傳hdfs://usr/share/lib/sqoop下,試了下, SQOOP_CONF_DIR依然找不到,mysql drive no find 解決了但不能用sql user name 登陸,找不到用戶,而這一切在命令行下徹底正常,報錯以下:apache

Sqoop command arguments :
             list-databases
             --connect
             jdbc:mysql://172.16.12.44:3306/
             --username
             bigdata_ro
             --password
             ********
Fetching child yarn jobs
tag id : oozie-ed23d117051393fc0989abc9110ba08d
2018-07-31 18:58:46,734 [main] INFO  org.apache.hadoop.yarn.client.RMProxy  - Connecting to ResourceManager at master/172.16.60.151:8032
Child yarn jobs are found - 
=================================================================

>>> Invoking Sqoop command line now >>>

2018-07-31 18:58:46,957 [main] WARN  org.apache.sqoop.tool.SqoopTool  - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2018-07-31 18:58:47,013 [main] INFO  org.apache.sqoop.Sqoop  - Running Sqoop version: 1.4.6-cdh5.15.0
2018-07-31 18:58:47,027 [main] WARN  org.apache.sqoop.tool.BaseSqoopTool  - Setting your password on the command-line is insecure. Consider using -P instead.
2018-07-31 18:58:47,039 [main] WARN  org.apache.sqoop.ConnFactory  - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2018-07-31 18:58:47,124 [main] INFO  org.apache.sqoop.manager.MySQLManager  - Preparing to use a MySQL streaming resultset.
2018-07-31 18:58:47,467 [main] ERROR org.apache.sqoop.manager.CatalogQueryManager  - Failed to list databases
java.sql.SQLException: Access denied for user 'bigdata_ro'@'172.16.60.149' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)    

....

<<< Invocation of Sqoop command completed <<<

No child hadoop job is executed.
Intercepting System.exit(1)

<<< Invocation of Main class completed <<<

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

Oozie Launcher failed, finishing Hadoop job gracefully

 

至此檢查全部相關配置文件發現,hue sqoop根本沒走 sqooq腳本,因此全部設置無效,而是走oozie的一個類:org.apache.oozie.action.hadoop.SqoopMain,因此可能Hue裏只支持sqoop2,幫暫時擱置,先導入數據 之後研究,,,,,,,瀏覽器

2、sqoop1.4.6 to hbase1.2 in shell:安全

# sqoop list-databases --connect jdbc:mysql://172.16.12.44:3306/che100 --username bigdata_ro --password *******
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/07/31 19:15:15 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.15.0
18/07/31 19:15:15 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
18/07/31 19:15:15 INFO teradata.TeradataManagerFactory: Loaded connector factory for 'Cloudera Connector Powered by Teradata' on version 1.7c5
18/07/31 19:15:15 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
admin
......

# sqoop import --connect jdbc:mysql://172.16.12.44:3306/che100 --username bigdata_ro --password ******* --table tc_district --hbase-table tc_district --column-family f1 --hbase-row-key id --check-column update_dt --incremental lastmodified --last-value 0  -m 1

# hbase shell
hbase(main):001:0> list
TABLE                                                                                                                    
tc_district                                                                                                              
1 row(s) in 0.2410 seconds

hue hive建外表關聯hbase表並刷新結構到impala:

CREATE EXTERNAL TABLE che100.tc_district(  

id INT,  

dname STRING,  

pid INT, 

update_dt TIMESTAMP)  

ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'  

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, f1:dname, f1:pid, f1:update_dt")  //注意 這裏key 是默認的不能用導入 的rwokey 字段 id,提示多一列,其它注意數據類型轉化,INT ,TINYINT,BOOLEAN, TIMESTAMP,decimal(11,6)

TBLPROPERTIES("hbase.table.name" = "tc_district"); 

hue impala 刷新後找到相關表後查詢測試:

INVALIDATE METADATA

SELECT * FROM `che100`.`tc_district` LIMIT 100

至此一切正常,但想從hbase browse裏看hbase數據,表都刷不出來:文檔得知爲了安全,hbase thrift 不容許直接對外訪問,由於這樣全部人知道你的thrift 地址均可以直接鏈的hbase服務器了:https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_sg_hbase_security.html翻譯以下:

想學習如何自定義權限認證,請參考過往記憶的博文:HiveServer2(Spark ThriftServer)自定義權限認證

HBase身份驗證

要配置HBase安全性,請完成如下任務:

  1. 配置HBase身份驗證:您必須爲HBase服務器和客戶端創建一種機制,以便使用HDFS,ZooKeeper和彼此安全地識別本身。這能夠確保主機是他們聲稱的主機。注意: 如下部分描述瞭如何將Apache HBase和CDH 5與Kerberos安全性一塊兒使用:
  2. 配置HBase受權:您必須爲容許客戶端訪問的資源創建規則。有關更多信息,請參閱配置HBase受權

 

使用Hue HBase App

Hue包含一個HBase應用程序,容許您經過Thrift代理服務器與HBase交互。由於Hue位於Thrift服務器和客戶端之間,因此Thrift服務器假定全部HBase操做都來自色調用戶而不是客戶。確保只容許Hue中的用戶執行分配給他們本身的憑據的HBase操做,而不是那些色調用戶,必須啓用HBase模擬

Hue團隊發佈於2015年3月25日,HBaseVideo

38評論

Hue附帶了一個HBase應用程序,可讓您建立表格,搜索行,閱讀單元格內容......只需點擊幾下。咱們如今很高興發佈最後一個缺失的安全性(在即將到來的Hue 3.8中可用),以便讓應用程序生產準備就緒!

 

 

HBase應用程序經過代理服務器(稱爲Thrift Server V1)與HBase通訊,代理服務器將命令轉發給HBase。由於Hue位於代理服務器和實際用戶之間,因此代理服務器認爲全部操做(例如建立表,掃描某些數據......)來自'hue'用戶而不是實際的Web用戶。這顯然不是很安全!

爲了確保HBase應用程序真正安全,咱們須要:

  • 確保Hue中的實際登陸用戶使用其權限執行操做。這是假冒的工做。
  • 確保Hue服務器僅發送這些調用。這是Kerberos強身份驗證的工做。

 

注意

咱們假設您已在羣集中安裝了HBase Thrift Server。若是使用Cloudera Manager,請轉到HBase服務實例列表,而後單擊「添加角色實例」並選擇「HBase Thrift Server」。

 

模擬

如今能夠將HBase配置爲提供模擬(使用或不使用Kerberos)。在咱們的例子中,這意味着用戶能夠經過Hue向HBase發送命令,而不會失去他們將在本身的憑據(而不是'hue'用戶)下運行的事實。

首先,確保在hbase-site.xml中有這個:

1

2

3

4

6

7

8

9

<property>

  <name>hbase.thrift.support.proxyuser</name>

  <value>true</value>

</property>

  

<property>

  <name>hbase.regionserver.thrift.http</name>

  <value>true</value>

</property>

 

注意

若是使用Cloudera Manager,能夠經過在HBase服務的配置搜索中鍵入「thrift」並檢查前兩個結果來完成。

 

而後在core-site.xml中檢查HBase是否有權冒充某人:

1

2

3

4

6

7

8

9

<property>

  <name>hadoop.proxyuser.hbase.hosts</name>

  <value>*</value>

</property>

  

<property>

  <name>hadoop.proxyuser.hbase.groups</name>

  <value>*</value>

</property>

 

最後檢查Hue是否指向其hue.ini中指定的HBase的本地配置目錄:

1

2

[hbase]

hbase_conf_dir=/etc/hbase/conf

 

注意

若是您使用的是Cloudera Manager,則可能須要在Hue配置中選擇HBase Thrift服務器,並在hue_safety_valve.ini的Hue服務高級配置代碼段(安全閥)中輸入相似的內容。

1

2

[hbase]

hbase_conf_dir={{HBASE_CONF_DIR}}

 

就是這樣,啓動HBase Thrift Server和Hue,你就準備好了!

 

Kerberos的安全性

如今Hue能夠向HBase Thrift Server發送命令並告訴他以某個用戶身份執行它們,咱們須要確保只容許Hue執行此操做。咱們使用Kerberos來強烈驗證HBase服務的用戶。在咱們的例子中,HBase Thrift服務器只有在來自Hue用戶時纔會接受命令。

確保HBase配置了Kerberos,而且您在Hue指向的hbase-site.xml中具備此功能:

 

1

2

3

4

6

7

8

9

<property>

  <name>hbase.security.authentication</name>

  <value>KERBEROS</value>

</property>

  

<property>

  <name>hbase.thrift.kerberos.principal</name>

  <value>hbase/_HOST@ENT.CLOUDERA.COM</value>

</property>

 

 

 

注意

若是在沒有模擬的狀況下使用Cloudera Manager或常規Thrift,請確保設置「HBase Thrift Authentication」hbase.thrift.security.qop必須設置爲如下之一:

  • auth-conf:身份驗證,完整性和機密性檢查
  • auth-int:身份驗證和完整性檢查
  • auth:僅限身份驗證

若是使用Cloudera Manager,請轉至「Hbase服務>配置>服務範圍/安全:HBase Thrift身份驗證」,而後選擇如下三個選項之一。

與上面相似,請確保hue.ini指向帶有hbase-site.xml的有效目錄:

1

2

[hbase]

hbase_conf_dir=/etc/hbase/conf

要麼

1

2

[hbase]

hbase_conf_dir={{HBASE_CONF_DIR}}

 

注意

若是使用模擬,請確保HTTP / _HOST主體位於其HBase Thrift服務器的密鑰表中。

 

重啓HBase和Hue,它們如今應該所有安全!

 

結論

您如今能夠肯定Hue用戶只能查看或修改HBase級別容許的內容。Hue保證若是用戶不能在HBase shell中執行某個操做,它將經過Hue徹底相同(Hue就像HBase頂部的'view')。

請注意,HBase選擇經過HTTP Thrift支持模擬,所以在使用模擬時常規Thrift不起做用。以前的Kerberos支持如今也頗有意義,由於全部操做都再也不來自Hue用戶了!只需點擊一下便可完成全部這些配置步驟。

 

如今是時候玩表示並打開HBase給全部用戶了!

 

 

像往常同樣隨意評論色調用戶列表或@gethue

 

注意

此錯誤意味着上面的'hadoop.proxyuser.hbase.hosts'/'hadoop.proxyuser.hbase.groups'屬性不正確:

1

2

3

Api Error: Error 500 User: hbase is not allowed to impersonate romain HTTP ERROR 500 Problem accessing /.

Reason: User: hbase is not allowed to impersonate bob Caused by:javax.servlet.ServletException:

User: hbase is not allowed to impersonate bob at org.apache.hadoop.hbase.thrift.ThriftHttpServlet.doPost(ThriftHttpServlet.java:117) at

注意

您如今可能會看到以下所示的權限錯誤。

1

Api Error: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions (user=admin, scope=default, action=CREATE)...

這是由於:

  • 您正在使用模擬,而您的用戶'bob'沒有足夠的HBase權限
  • 您沒有使用模擬,而'hue'用戶沒有足夠的HBase權限

 

解決此問題的一種快速方法是隻提供全部權限。顯然,這不建議用於真正的設置,而是閱讀有關HBase訪問控制的更多信息!

1

2

3

sudo -u hbase hbase shell

  

hbase(main):004:0> grant 'bob', 'RWC'

 

注意

若是你獲得一個「Api錯誤:TSocket讀取0字節」,這是由於Hue不知道Thrift服務器正在期待Thrift HTTP。仔細檢查Hue是否指向包含hbase.regionserver.thrift.http屬性設置爲true的hbase-site.xml。

暫時的黑客將是在hue.ini中插入:

1

2

[hbase]

use_doas=true

 

注意

「Api錯誤:超出最大遞歸深度」表示HBase Thrift服務器未做爲HTTP Kerberos服務運行。

在最新的Hue 3.8中,您如今應該只獲得401錯誤。

 

注意

使用模擬時未測試緩衝傳輸模式,但可能有效。

 

注意

若是您收到此錯誤:

1

Caused by: org.apache.hadoop.hbase.thrift.HttpAuthenticationException: Authorization header received from the client is empty.

您極可能會點擊  https://issues.apache.org/jira/browse/HBASE-13069。還要確保HTTP / _HOST主體位於其HBase Thrift Server的keytab中。請注意,做爲後續行動,您可能會得到https://issues.apache.org/jira/browse/HBASE-14471

還有一個框架傳輸問題還沒有獲得支持。咱們建議使用緩衝傳輸。

至此若是還有錯誤,請移步到hue登陸用戶側點 hue administers,或訪問http://master:8889/hue/about/會自動檢查配置:

Checking current configuration

Configuration files located in /run/cloudera-scm-agent/process/332-hue-HUE_SERVER 
 

Potential misconfiguration detected. Fix and restart Hue.

 

OOZIE_EMAIL_SERVER Email notifications is disabled for Workflows and Jobs as SMTP server is localhost.
HBase Browser Failed to authenticate to HBase Thrift Server, check authentication configurations.

在查相關文檔解決:但看了最新版hue4.1以後,第一句話讓你看到原來它是支持SQOOP1的,只是使用方式徹底界面化了 ,且配置文件根本不在相關conf 下,而是每次啓動會動態建立一個,omg --!:

 

發佈者色相隊在2017年8月24日,在順化4.1SQLSqoop

10評論

明年將在Hue 4.1和CDH 6中推出使人興奮的新功能。其中之一是Hue的全新工具,使用Apache Sqoop 1將關係數據庫中的數據導入HDFS文件或Hive表。它使咱們可以經過交互式UI只需幾回點擊便可將大量數據帶入集羣。此Sqoop鏈接器已添加到Hue 的現有導入數據嚮導中。

 

過去,使用Sqoop命令行界面導入數據多是一個麻煩且低效的過程。該任務指望用戶對Sqoop有很好的瞭解。例如,他們須要將一系列必需的參數放在一塊兒,這些參數具備特定的語法,這將致使容易出錯。一般,正確地獲取這些可能須要幾個小時的工做。如今有了Hue的新功能,您能夠在幾分鐘內完成Sqoop的工做。進口在YARN上運行,由Oozie安排。本教程提供了有關如何執行此操做的分步指南。

 

 

 

教程

你須要什麼

首先,您須要在其中配置Apache Sqoop,Apache YARN,Apache Oozie和Hue的正在運行的集羣。

接下來,您須要安裝特定於數據庫的JDBC jar。爲此,請將它們放在HDFS上的某個目錄中。

要得到MySQL自動完成功能,須要配置Lib RDBMS和筆記本:http://gethue.com/custom-sql-query-editors/

此外,您須要經過在Hue ini中的索引器部分下將enable_sqoop設置爲true來打開該功能。

注意:

若是使用Cloudera Manager,請檢查如何在hue.ini安全閥中添加屬性並將上述參數值放在那裏。

 

選擇源表

如今讓咱們開始吧!

在本教程中,咱們將從Teradata導入表到Apache Hive。單擊左側窗格中的漢堡菜單,而後選擇屏幕左下角的選項以導航到Hue的索引器部分。從「類型」下拉列表中選擇「外部數據庫」。

選擇數據庫有兩種模式:

  • 預配置 - 容許您快速選擇管理員已在Hue中配置的數據庫。
  • 自定義 - 容許您經過在真實自助服務模式下提供必要的憑據來訪問所需的任何數據庫。

注意:任一模式中的JDBC選項都容許咱們使用JDBC特定憑據指向數據庫。

咱們如今將選擇自定義模式,提供數據庫憑據並啓動測試鏈接。測試經過後,下拉列表將填充數據庫名稱列表。在數據庫選擇時,將填充表名列表。在桌面選擇上,快速預覽很是方便。您還能夠選中「全部表」選項以一次性導入特定數據庫的全部表。

 

選擇目的地

完成源頁面後,單擊「下一步」以導航到目標頁面。在這裏,選擇Destination類型,它能夠是HDFS文件或Hive表。還要選擇Sqoop運行導入做業所需的全部數據庫特定jar。因爲咱們選擇了Teradata,咱們將選擇全部teradata特有的罐子。

咱們還能夠爲咱們的導入做業添加額外的選項,如映射器編號,輸出數據格式,分隔符,詳細模式,拆分選項,壓縮模式等。文檔部分對此進行了詳細說明。

咱們甚至能夠重命名列名稱,並經過取消選中「保持」複選框來過濾掉不須要的列。

如今,讓咱們點擊「提交」按鈕。在這樣作時,會生成一個Sqoop做業,能夠在Hue的做業瀏覽器中進行跟蹤。

完成工做後,咱們能夠經過對新導入的數據執行Hive / Impala查詢,利用Hue的編輯器進行數據處理和查詢分析。

文檔

本身組裝lib目錄

咱們須要執行Sqoop導入做業所需的全部庫。該要求特定於正在使用的數據庫。下面列出了一些流行數據庫所需的罐子:

  • Oracle:oracle-connector-java.jar
  • MySQL:mysql-connector-java.jar
  • Teradata:teradata-connector-java.jar,sqoop-connector-teradata-1.3c5.jar,tdgssconfig.jar,terajdbc4.jar
  • PostgreSQL:postgresql-connector-java.jar

設置

屬性提供了許多其餘選項來進一步調整導入操做以適應您的特定工做負載。

  • Libs:Sqoop 1所需的數據庫特定庫
  • 映射器使用n個映射任務並行導入
  • 拆分方:用於拆分工做單位的表格列
  • 詳細模式:在工做時打印更多信息
  • 壓縮模式:啓用壓縮
  • 格式:數據能夠以3種不一樣的格式導入:文本,avro,序列
  • 字段:設置字段分隔符(僅在格式爲文本時啓用)
  • 行:設置行尾字符(僅在格式爲文本時啓用)
  • (可選)封閉方式:設置包含字符的字段(僅在格式爲文本時啓用)

 

支持的數據庫

Sqoop 1支持的任何數據庫。

 

故障排除

在導入過程當中,列的數據類型能夠更改成HDFS / Hive兼容的數據類型。導入表時,主鍵用於爲映射器建立拆分。若是沒有主鍵,則須要明確選擇拆分列; 若是不這樣作會致使導入失敗。在執行全表導入時,若是全部表都沒有主鍵,則導入做業將失敗。此外,若是因爲某種緣由做業失敗,您能夠從做業跟蹤器中的日誌中找出失敗的緣由。如需進一步幫助,請訪問https://sqoop.apache.org/docs/1.4.6/

相關文章
相關標籤/搜索