欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

sqoop內(nèi)部結構是怎樣的

這篇文章主要介紹“sqoop內(nèi)部結構是怎樣的”,在日常操作中,相信很多人在sqoop內(nèi)部結構是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”sqoop內(nèi)部結構是怎樣的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設計、吉陽網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1.1  Sqoop內(nèi)部結構

Sqoop程序是由的主類com.cloudera.sqoop.Sqoop驅動。有限數(shù)量的額外的類在同一個包:SqoopOptions (如前所述),ConnFactory(即熟練操作ManagerFactory實例)。

1.1.1    一般程序流程

一般的程序流程如下:

com.cloudera.sqoop.Sqoop是主類和實現(xiàn)了Tool,一個新的實例ToolRunner被推出,Sqoop的第一個參數(shù)是一個字符串,并在SqoopTool中定義并執(zhí)行,SqoopTool來執(zhí)行用戶的各種請求操作(如: import, export, codegen等)。

SqoopTool將解析其余的參數(shù),設置相應的字段在SqoopOptions類,然后執(zhí)行。

在SqoopTool 的run()方法中,import 、export或者其他正確的指令被執(zhí)行。一般情況下ConnManager一般在SqoopOptions數(shù)據(jù)的基礎上進行實例化。ConnFactory被用于從ManagerFactory中獲取一個ConnManager。這在前面的部分已經(jīng)進行了描述。Imports 、 exports或者其他大型數(shù)據(jù)的遷移操作通常是一個并行的、可靠的MapReduce任務。Import操作并不是一定要以MapReduce作業(yè)的方式運行,ConnManager.importTable()將確定如何以最佳的方式進行import操作。每一個主要操作實際上都有ConnMananger控制,除了生成代碼的操作,這些操作是由CompilationManager和ClassWriter做的(都在 com.cloudera.sqoop.orm 包中)。導入數(shù)據(jù)到Hive的操作是由com.cloudera.sqoop.hive.HiveImport的importTable()完成的,這樣做是為了不為使用ConnManager的實現(xiàn)都擔心。

ConnManager 的 importTable()方法接收一個類型為ImportJobContext的參數(shù),其中包含這個方法所需的各種參數(shù)值。將來,該類可擴展附加參數(shù),以實現(xiàn)功能更加強大的import操作。同樣, exportTable()方法接收的參數(shù)類型ExportJobContext。這些類包含一系列導入/導出,指向SqoopOptions對象,以及其他相關的數(shù)據(jù)。

1.1.2    子包

com.cloudera.sqoop包中的子包,包括:

※  Hive:便于數(shù)據(jù)導入到Hive

※  IO: 實現(xiàn)的java.io. *接口

※  Lib: 外部公共API(如前所述)

※  Manager: ConnManager和ManagerFactory的接口和它們的實現(xiàn)

※  Mapreduce: 新的(0.20 +)MapReduce的API接口的類

※  Orm: 代碼自動生成

※  Tool: 實現(xiàn)SqoopTool

※  Util: 各種實用工具類

IO包中的OutputStream和BufferedWriter的實現(xiàn)被用于直接向HDFS進行寫入。SplittableBufferedWriter允許為客戶端打開一個單一的BufferedWriter,在引擎之下,當達到目標值后連續(xù)的寫入文件系統(tǒng)。這允許在Sqoopimport的同時使用壓縮機制(如gzip),同時允許在MapR任務之后對數(shù)據(jù)集進行分割。大對象文件存儲系統(tǒng)的代碼也存在于IO包中。

Mapreduce包中的代碼用于直接與Hadoop MapReduce做接口,將在下一章節(jié)中詳述。

ORM包中的代碼用于生產(chǎn)代碼。它依賴于提供了com.sun.tools.javac包的JDK的tools.jar包。

UTIL包中包含用于整個Sqoop的各種工具

※  ClassLoaderStack:管理由當前線程的堆棧使用的ClassLoader的實例,這正是當以本地模式運行MapReduce任務時自動生成代碼寫入當心線程的原理。

※  DirectImportUtils:包含一些直接進行Hadoop import操作的方便方法。

※  Executor:啟動外部進程,并連接這些來生成由一個AsyncSink(見下面更詳細地)的流處理程序。

※  ExportException:當exports失敗時由ConnManagers拋出異常。

※  ImportException:當import失敗時由ConnManagers拋出異常。

※  JDBCURL:處理連接字符串的解析,這是類URL,是不規(guī)范的、不合格的。

※  PerfCounters:被用來估計用于顯示給用戶的傳輸速率。

※  ResultSetPrinter:漂亮地打印結果集。

在不同的時候,Sqoop從外部程序中讀取stdout,最簡單的模式就是由LocalMySQLManager和DirectPostgresqlManager執(zhí)行的直接模式 (direct-mode)import。之后由Runtime.exec()產(chǎn)生一個進程,該進程的標準輸出(Process.getInputStream())和潛在錯誤(Process.getErrorStream())都需要被處理。在這些流之間無法讀取更多的數(shù)據(jù)從而導致在寫入更多數(shù)據(jù)之前外部進程阻塞。因此,這些都必須處理,最好以異步的方式。

按照Sqoop的說法,“異步接收器”是一個線程需要一個InputStream和讀取完成。這些實現(xiàn)AsyncSink實現(xiàn)。com.cloudera.sqoop.util.AsyncSink抽象類定義了這家工廠必須執(zhí)行的操作。processStream()將產(chǎn)生另一個線程立即開始處理從InputStream中讀取的數(shù)據(jù)參數(shù); 它必須讀這流來完成的。 join()方法允許外部線程等待,直到處理完成。

一些"stock"被同步實現(xiàn):LoggingAsyncSink將重復InputStream上的一切在log4j INFO語句中。NullAsyncSink消耗所有的輸入和什么都不做。

各種ConnManagers使得外部進程以內(nèi)部類的方式擁有它們自己的AsyncSink實現(xiàn),它們通過數(shù)據(jù)庫tools讀取,并且促使數(shù)據(jù)流向HDFS,有可能在此期間進行格式轉換。

1.1.3    與MapReduce的接口

Sqoop調(diào)度MapReduce作業(yè)產(chǎn)生imports和exports。配置和執(zhí)行的MapReduce工作如下幾個共同的步驟(配置InputFormat配置OutputFormat設置映射的實施;等等)。這些步驟是在com.cloudera.sqoop.mapreduce.JobBase類中的。為了使用,JobBase允許一個用戶來指定InputFormat,OutputFormat,和映射器。

JobBase本身就是ImportJobBase和ExportJobBase的子集,為特定的配置步驟提供更好的支持,分別由ImportJobBase和ExportJobBase的子類。 ,ImportJobBase.runImport()將調(diào)用的配置步驟,并運行一個工作表導入HDFS。

到此,關于“sqoop內(nèi)部結構是怎樣的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

新聞名稱:sqoop內(nèi)部結構是怎樣的
標題網(wǎng)址:http://www.chinadenli.net/article14/gcigge.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷建站公司面包屑導航虛擬主機動態(tài)網(wǎng)站網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計