前言
本來認(rèn)為這塊是很簡(jiǎn)單的事兒讲坎,不想單獨(dú)記錄下來愧薛,恐怖的是花了2小時(shí)時(shí)間才調(diào)通(之前踩過的坑又踩了一遍),所以想下還是用簡(jiǎn)書記錄下來罷瓮栗。
為什么使用 Sqoop1 而不是 Sqoop2费奸?
這個(gè)进陡,很尷尬,Hue 3.10 + Sqoop2 + SSL 一直沒有調(diào)通换况,Sqoop Transfer
界面一直報(bào):Sqoop error: Could not get connectors
戈二,避免耽誤進(jìn)度,所以沒有使用腾供。
準(zhǔn)備工作
有兩塊需要注意鲜滩,一個(gè)是 Mysql Connector Jar 需要在 Oozie / Sqoop 的對(duì)應(yīng)庫目錄下存在徙硅,一個(gè)是 Yarn 相關(guān)的內(nèi)存資源配置,否則提交任務(wù)后會(huì)一直進(jìn)行 heartbeat须肆。
A. Mysql Connector Jar 部署
如 Step by Step 實(shí)現(xiàn)基于 Cloudera 5.8.2 的企業(yè)級(jí)安全大數(shù)據(jù)平臺(tái) - 基礎(chǔ)部署 一文所述桩皿,我們?cè)诓渴?Oozie 服務(wù)的時(shí)候已經(jīng)涉及部分:
pssh -h list_agents "sudo mkdir -p /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hive/lib/ /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/oozie/lib/ /var/lib/oozie"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/oozie/lib/"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /var/lib/oozie"
我們還需要在另外幾個(gè)目錄進(jìn)行部署:
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /home/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/oozie/libtools"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /var/lib/oozie/mysql-connector-java-5.1.34.jar"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /home/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/sqoop/lib"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /var/lib/sqoop"
另外也需要在 HDFS 的 Oozie sharlib 目錄下存在該 jar泄隔,其中 TIMESTAMP
是 Oozie 啟動(dòng)時(shí)的時(shí)間戳(Date 格式)佛嬉,一般類似 20170318104137
:
hadoop fs -put mysql-connector-java-5.1.34.jar /user/oozie/share/lib/lib_${TIMESTAMP}/sqoop/
最后我們需要重啟 Sqoop 。
B. 合理配置 YARN 內(nèi)存
如果對(duì)以下配置不進(jìn)行合理配置(比如使用 Cloudera 的默認(rèn)配置)赡盘,會(huì)出現(xiàn) issue: https://community.cloudera.com/t5/Batch-Processing-and-Workflow/Oozie-sqoop-action-in-CDH-5-2-Heart-beat-issue/td-p/22181,所以我們需要修改并且加大它們:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
這塊不需要手動(dòng)修改配置文件钝腺,可以在 Cloudera Manager Web Console
-> Cluster
-> YARN
-> Configuration
中設(shè)置赞厕。
修改完上述配置后皿桑,我們需要重啟 YARN毫目。
操作步驟
我們先拋開之前部署的 Kerberos + SSL 來說蔬啡,不考慮這幾個(gè)安全組件,怎么在基礎(chǔ)裸集群內(nèi) run 起來 Sqoop1 作業(yè)镀虐。和從冰箱拿香蕉一樣箱蟆,開冰箱 -> 拿香蕉 -> 關(guān)冰箱,真的只要 3 步刮便。
Step1. 建立測(cè)試用數(shù)據(jù)庫
創(chuàng)建 MySQL 的步驟這里不闡述空猜,各個(gè)網(wǎng)站隨便搜,注意 CentOS 7.2 默認(rèn)是 MariaDB恨旱,請(qǐng)參考類似文檔辈毯。
Step2. 創(chuàng)建測(cè)試工作流
打開 Hue
的 Web 界面,進(jìn)入 Workflows
-> Editors
-> Workflows
搜贤,點(diǎn)擊 Create
按鈕。從上方的標(biāo)簽中選擇 Sqoop1
拖入 Drop your action here
的位置仪芒,在 Sqoop command
中輸入:
import --connect jdbc:mysql://${MYSQL_HOSTNAME}:${MYSQL_PORT}/${DN_NAME} --table ${TABLE_NAME} --target-dir hdfs://${NAMENODE_HOSTNAME}:${NAMENODE_PORT}/${PATH_TARGET} -m 1 --username ${USERNAME} --password ${PASSWORD}
命令中的變量請(qǐng)自行替換唁影。完成后保存,點(diǎn)擊 Save
按鈕 桌硫。
Step3. 啟動(dòng)工作流
點(diǎn)擊 Submit
按鈕夭咬,提交作業(yè)。
注意: target-dir 必須本身不存在铆隘,否則會(huì)報(bào)錯(cuò)卓舵。
小結(jié)
本文介紹了如何在 Hue 3.10 中提交 Sqoop1 作業(yè),以及如何避免常見問題膀钠。