
1. 概述
1.1 版本
FineDataLink 版本 | 功能說明 |
---|---|
4.0.11 | 支援使用Hadoop Hive (HDFS)寫入資料 |
1.2 應用場景
FineDataLink 支援讀取 Hadoop Hive 中的資料進行資料處理,但是直接透過Hive、Impala的API寫入資料效能不佳,因此 FDL 提供了Hive(HDFS) 寫入資料。
本文將介紹如何連結 Hadoop Hive (HDFS)資料源。
2. 使用限制
由於Hive底層儲存(HDFS)的限制,資料同步、資料轉換-DB表匯出中僅支援追加寫入資料,不支援更新資料。
3. 準備工作
3.1 前提條件
詳情請參見:前提條件
3.2 版本和驅動
下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理
注:在上傳驅動包時,需要解壓下面的「日誌jar」檔案,和驅動一起上傳至 FineDataLink。
支援的資料庫版本 | 驅動包下載 | 日誌jar下載 |
---|---|---|
hive_1.1 | ||
Hadoop_Hive_1.2;hive2.3; hive2.1.2;hive2.1.1 |
3.3 收集連結資訊
在連結資料庫之前,請收集以下資訊:
資料庫所在伺服器的 IP 地址和埠號;
資料庫的名稱;
若是帳號密碼認證,需要收集帳號和密碼;若是 Kerberos 認證,需要收集用戶端 principal 和 keytab 金鑰路徑;
HDFS 檔案系統地址(IP 地址和埠號)注:同時需要保證 FineDataLink 所在伺服器能存取 HDFS 檔案系統埠,例如 HDFS 檔案系統預設埠為 8020,且伺服器開啟了防火牆,則需要參考下文開放 8020 埠。
Windows 系統開放埠步驟請參見:Windows伺服器設定出入站規則
Linux 系統開放埠步驟請參見:Linux防火墻使用及配置
4. 具體連結步驟
1)管理者登入 FDL 工程,點選「管理系統>資料連結>資料連結管理」,選中某個資料夾後,建立資料連結。如下圖所示:
2)設定資料連結名稱(可同時修改資料連結所在目錄)。如下圖所示:
3)可根據資料源分類、支援形式、適配模組、資料源名稱篩選資料庫。如下圖所示:
4)切換驅動為「自訂」選擇 3.2 節上傳的驅動,並輸入 3.3 節收集的連結資訊,如下圖所示:
Kerberos 認證方式詳情可參見:資料連結 Kerberos 認證
使用 Kerberos 認證需要注意以下事項:
連結前請檢查 /etc/hosts 中的機器名對應 IP 是否為局域網 IP;
檢查 /etc/hostname 中機器名設定和 /etc/hosts 中是否配置一致;
檢查 FineDataLink 所在機器 hosts 配置的 IP+ 機器名是否正確;
本地連結時需要配置 /etc/hosts 檔案,新增遠端映射:IP+機器名,例如: 192.168.5.206 centos-phoenix 。
5)點選「測試連結」,若連結成功則「儲存」該連結。如下圖所示:
5. 使用資料源
6. 注意事項
6.1 問題描述
資料連結報錯 org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x。
6.2 解決方案
6.2.1 解決方案1
Linux 環境:
在FDL服務端的catalina.sh 裏面指定新增變數宣告:export HADOOP_USER_NAME = hdfs,指定連結 HDFS 的使用者為 hdfs;
注:hdfs 可根據實際帳號修改。
Windows 環境:
在FDL服務端的 catalina.bat 裏面指定新增變數宣告:HADOOP_USER_NAME=hdfs,指定連結 HDFS 的使用者為 hdfs;
注:hdfs 可根據實際帳號修改。
6.2.2 解決方案2(不推薦)
在不指定使用者的情況下,連結HDFS時預設使用root帳號,需要關閉HDFS使用者驗證,可能會帶來安全隱患。因為該方案可讓所有使用者存取 hdfs,不用進入hdfs使用者再執行命令。
注:CDH中沒有這個配置,需要手動加進去。
步驟如下:
1)找到 hdfs-site.xml 的 HDFS 服務進階配置程式碼段(安全閥);
2)dfs.permissions.enabled 的值設定為 false,儲存更改,重啟 hdfs 。