天天看點

高可用Hadoop平台-實戰尾聲篇1.概述2.導出資料目的3.Sqoop4.導出流程5.總結6.結束語

  今天這篇部落格就是《高可用hadoop平台》的尾聲篇了,從搭建安裝到入門運作 hadoop 版的

helloworld(wordcount 可以稱的上是 hadoop 版的 helloworld

),在到開發中需要用到的各個套件以及對套件的安裝使用,在到 hadoop

的實戰,一路走來我們對在hadoop平台下開發的基本流程應該都熟悉了。今天我們來完成在高可用hadoop平台開發的最後一步,導出資料。

  首先,我來說明下為什麼要導出資料,導出資料的目的是為了幹嘛?

  我們都知道,我們當初統計這些資料的目标,就是為了來可視化這些資料結果;雖然結果我們是統計出來儲存在 hdfs

上,但是,前段同學需要拿到這些資料,直接操作 hdfs

讀取統計結果,這樣的做法是不明智的,撇開安全性不說,時延就是一個很大的問題。是以,這裡我們需要有一個步驟去完成資料的導出,将資料導出到

mysql 之類的關系型資料庫。這裡我們用到的導出套件是sqoop。

  打開配置環境檔案:

  編輯 sqoop 的環境,内容如下所示:

  變動内容如下:

  注:這裡使用 sqoop 自帶的 zookeeper ,另外由于沒有使用到 hbase ,故這裡未配置 hbase 的路徑指向。

  streaming result set com.mysql.jdbc.rowdatadynamic@12e9d40f is still active

  執行sqoop腳本時,出現這個異常是因為mysql的驅動的原因,使用最新的mysql驅動包。

  解決方案:

  然後解壓到sqoop目錄的lib目錄下,重新執行腳本正常。

  至此,sqoop的安裝配置以及使用到此完成。

  流程圖如下所示:

高可用Hadoop平台-實戰尾聲篇1.概述2.導出資料目的3.Sqoop4.導出流程5.總結6.結束語

  将hive資料庫的tbls表導入到hdfs,指令内容如下:

  這裡 jdbc 的連結位址指向 mysql 庫的連結位址。

  注:--fields-terminated-by '\t' 以tab分割

  --null-string '**'  将null用**替代(--是sqoop保留字元,不能使用)

  -m 1  指定一個map任務

  将hdfs上的檔案導入到mysql資料庫:

  接下來,在我們導出資料成功後,我們可以将臨時使用 hive 統計的結果表删除,若資源充足,我們可以保留最近 7 天的統計結果。

  删除腳本指令如下所示:

  在導出的時候,我們需要注意導出字段的分隔符,導出到目的地表名是否存在,書寫導出指令是否正确。在導出異常時,根據具體的異常資訊做相應的處理。

  《高可用hadoop平台》系列就和大家分享到這裡,這一系列文章給對hadoop方面感興趣,以及打算從事hadoop方面工作的人一點點幫助,大家在研究的過程當中若是有什麼問題,可以加群讨論或是發送郵件給我,我會盡我所能為您解答,與君共勉!