如何將傳統關係資料庫的數據導入Hadoop?

2021-01-19 IT168

【IT168 評論】大多數企業的關鍵數據存在於OLTP資料庫中,存儲在這些資料庫中的數據包含有關用戶,產品和其他有用信息。如果要分析此數據,傳統方法是定期將該數據複製到OLAP數據倉庫中。Hadoop已經出現在這個領域並扮演了兩個角色:數據倉庫的替代品;結構化、非結構化數據和數據倉庫之間的橋梁。圖5.8顯示了第一個角色,其中Hadoop在將數據導到OLAP系統(BI應用程式的常用平臺)之前用作大規模加入和聚合工具。

圖5.8 使用Hadoop進行OLAP數據輸入輸出和處理

以Facebook為例,該企業已成功利用Hadoop和Hive作為OLAP平臺來處理數PB數據。圖5.9顯示了類似於Facebook的架構。該體系結構還包括OLTP系統的反饋循環,可用於推送在Hadoop中發現的洞察,例如為用戶提供建議。

在任一使用模型中,我們都需要一種將關係數據引入Hadoop的方法,還需要將其輸出到關係資料庫中。本節,我們將使用Sqoop簡化將關係數據輸出到Hadoop的過程。

實踐:使用Sqoop從MySQL導入數據

Sqoop是一個可用於將關係數據輸入和輸出Hadoop的項目。它是一個很好的高級工具,封裝了與關係數據移動到Hadoop相關的邏輯,我們需要做的就是為Sqoop提供確定輸出哪些數據的SQL查詢。該技術提供了有關如何使用Sqoop將MySQL中的某些數據移動到HDFS的詳細信息。

圖5.9 使用Hadoop進行OLAP並反饋到OLTP系統

本節使用Sqoop 1.4.4版本,此技術中使用的代碼和腳本可能無法與其他版本的Sqoop一起使用,尤其是Sqoop 2,它是作為Web應用程式實現的。

問題

將關係數據加載到集群中,並確保寫入有效且冪等。

解決方案

在這種技術中,我們將看到如何使用Sqoop作為將關係數據引入Hadoop集群的簡單機制。我們會介紹將數據從MySQL導入Sqoop的過程,還將介紹使用快速連接器的批量導入(連接器是提供資料庫讀寫訪問的特定於資料庫的組件)。

討論

Sqoop是一個關係資料庫輸入和輸出系統,由Cloudera創建,目前是Apache項目。

執行導入時,Sqoop可以寫入HDFS、Hive和HBase,對於輸出,它可以執行相反操作。導入分為兩部分:連接到數據源以收集統計信息,然後觸發執行實際導入的MapReduce作業。圖5.10顯示了這些步驟。

圖5.10 Sqoop導入:連接到數據源並使用MapReduce

Sqoop有連接器的概念,它包含讀寫外部系統所需的專用邏輯。Sqoop提供兩類連接器:用於常規讀取和寫入的通用連接器,以及使用資料庫專有批處理機制進行高效導入的快速連接器。圖5.11顯示了這兩類連接器及其支持的資料庫。

圖5.11用於讀寫外部系統的Sqoop連接器

在繼續之前,我們需要訪問MySQL資料庫,並且MySQL JDBC JAR需要可用。以下腳本將創建必要的MySQL用戶和模式並加載數據。該腳本創建了一個hip_sqoop_user MySQL用戶,並創建了包含三個表的sqoop_test資料庫:stocks,stocks_export和stocks_staging。然後,它將stock樣本數據加載到表中。所有這些步驟都通過運行以下命令來執行:

這是快速瀏覽腳本功能:  

第一個Sqoop命令是基本導入,在其中指定MySQL資料庫和要導出的表連接信息:

MySQL表名稱

Linux中的MySQL表名稱區分大小寫,確保在Sqoop命令中提供的表名使用正確的大小寫。

默認情況下,Sqoop使用表名作為HDFS中的目標目錄,用於執行導入的MapReduce作業。如果再次運行相同的命令,MapReduce作業將失敗,因為該目錄已存在。

我們來看看HDFS中的stocks目錄:

導入數據格式

Sqoop已將數據導入為逗號分隔的文本文件。它支持許多其他文件格式,可以使用表5.6中列出的參數激活它們。

表5.6 控制導入文件格式的Sqoop參數

如果要導入大量數據,則可能需要使用Avro等文件格式,這是一種緊湊的數據格式,並將其與壓縮結合使用。以下示例將Snappy壓縮編解碼器與Avro文件結合使用。它還使用--target-dir選項將輸出寫入表名的不同目錄,並指定應使用--where選項導入行的子集。可以使用--columns指定要提取的特定列:

請注意,必須在io.compression.codecs屬性下的配置文件core-site.xml中定義在命令行上提供的壓縮。Snappy壓縮編解碼器要求安裝Hadoop本機庫。有關壓縮設置和配置等更多詳細信息,請參見第4章,連結見文末。

可以通過引入AvroDump工具來了解Avro文件結構,以了解Sqoop如何布局記錄。Sqoop使用Avro的GenericRecord進行記錄級存儲(有關詳細信息,請參閱第3章,連結見文末)。如果針對HDFS中Sqoop生成的文件運行AvroDump,將看到以下內容:

將Sqoop與SequenceFiles結合使用

SequenceFiles難以使用的一個原因是,沒有通用的方法來訪問SequenceFile中的數據。必須有權訪問用於寫入數據的Writable類。在Sqoop的情況下,代碼可生成此文件,這引入了一個主要問題:如果轉移到較新版本的Sqoop,並且該版本修改了代碼生成器,那麼舊代碼生成的類可能無法與SequenceFiles一起使用。需要將所有舊的SequenceFiles遷移到新版本,或者具有可以使用這些SequenceFiles不同版本的代碼。由於此限制,不建議將SequenceFiles與Sqoop一起使用。如果正在尋找有關SequenceFiles如何工作的更多信息,請運行Sqoop導入工具並查看在工作目錄中生成的stocks.java文件。

可以更進一步,使用--query選項指定整個查詢,如下所示:

保護密碼

到目前為止,我們一直在命令行中使用明文密碼,這是一個安全漏洞,因為主機上的其他用戶可以輕鬆列出正在運行的進程並查看密碼。幸運的是,Sqoop有一些機制可以用來避免密碼洩露。

第一種方法是使用-P選項,這將導致Sqoop提示輸入密碼。這是最安全的方法,因為它不需要存儲密碼,但這意味著無法自動執行Sqoop命令。

第二種方法是使用--password-file選項,可以在其中指定包含密碼的文件。請注意,此文件必須存在於已配置的文件系統中(通常可能是HDFS),而不是存在於Sqoop客戶端本地磁碟上。你可能希望鎖定文件,以便只有你對此文件具有讀取權限。 這仍然不是最安全的選項,因為文件系統上的root用戶仍然可以窺探文件,除非運行安全級別較高的Hadoop,否則即使非root用戶也可以輕鬆訪問。

最後一個選項是使用選項文件。創建一個名為/.sqoop-import-opts的文件:  

不要忘記鎖定文件以避免用戶窺探:

然後,我們可以通過--options-file選項將此文件名提供給Sqoop作業,Sqoop將讀取文件中指定的選項,這意味著無需在命令行上提供它們:

數據拆分

Sqoop如何在多個mapper之間並行化導入?在圖5.10中,我展示了Sqoop的第一步是如何從資料庫中提取元數據。它檢查導入的表以確定主鍵,並運行查詢以確定表中數據的下限和上限(見圖5.12)。Sqoop假設在最小和最大鍵內的數據接近均勻分布,因為它將delta(最小和最大鍵之間的範圍)按照mapper數量拆分。然後,為每個mapper提供包含一系列主鍵的唯一查詢。

圖5.12 確定查詢拆分的Sqoop預處理步驟

我們可以將Sqoop配置為使用帶有--split-by參數的非主鍵,這在最小值和最大值之間沒有均勻分布的情況下非常有用。但是,對於大型表,需要注意--split-by中指定的列已編制索引以確保最佳導入時間,可以使用--boundary-query參數構造備用查詢以確定最小值和最大值。

增量導入

Sqoop支持兩種導入類型:追加用於隨時間遞增的數值數據,例如自動增量鍵;lastmodified適用於帶時間戳的數據。在這兩種情況下,都需要使用--check-column指定列,通過--incremental參數指定模式(值必須是append或lastmodified),以及用於通過--last-value確定增量更改的實際值。

例如,如果要導入2005年1月1日更新的stock數據,則執行以下操作:

假設還有另一個系統繼續寫入該表,可以使用此作業的--last-value輸出作為後續Sqoop作業的輸入,這樣只會導入比該日期更新的行。

Sqoop作業和Metastore

可以在命令輸出中看到增量列的最後一個值。如何才能最好地自動化可以重用該值的流程?Sqoop有一個作業的概念,可以保存這些信息並在後續執行中重複使用:

執行上述命令會在Sqoop Metastore中創建一個命名作業,該作業會跟蹤所有作業。默認情況下,Metastore包含在.sqoop下的主目錄中,僅用於自己的作業。如果要在用戶和團隊之間共享作業,則需要為Sqoop的Metastore安裝符合JDBC的資料庫,並在發出作業命令時使用--meta-connect參數指定其位置。

在上一個示例中執行的作業創建命令除了將作業添加到Metastore之外沒有做任何其他操作。要運行作業,需要顯式執行,如下所示:

--show參數顯示的元數據包括增量列的最後一個值。這實際上是執行命令的時間,而不是表中的最後一個值。如果正在使用此功能,請確保資料庫伺服器和與伺服器(包括Sqoop客戶端)交互的任何客戶端的時鐘與網絡時間協議(NTP)同步。

Sqoop將在運行作業時提示輸入密碼。要使其在自動腳本中運行,需要使用Expect(一種Linux自動化工具)在檢測到Sqoop提示輸入密碼時從本地文件提供密碼,可以在GitHub上找到與Sqoop一起使用的Expect腳本,網址為:https://github.com/alexholmes/hadoop-book/blob/master/bin/sqoop-job.exp。

Sqoop作業也可以刪除,如下所示:

$ sqoop job --delete stock_increment

快速MySQL導入

如果想完全繞過JDBC並使用快速MySQL Sqoop連接器進行HDFS的高吞吐量加載,該怎麼辦?該方法使用MySQL附帶的mysqldump實用程序來執行加載。必須確保mysqldump位於運行MapReduce作業的用戶路徑中。要啟用快速連接器,必須指定--direct參數:

快速連接器有哪些缺點? 快速連接器僅適用於文本輸出文件 ,指定Avro或SequenceFile,因為導入的輸出格式不起作用。

導入到Hive

此技術的最後一步是使用Sqoop將數據導入Hive表。HDFS導入和Hive導入之間的唯一區別是Hive導入有一個後處理步驟,其中創建並加載Hive表,如圖5.13所示。

圖5.13 Sqoop Hive導入事件序列

當數據從HDFS文件或目錄加載到Hive時,如Sqoop Hive導入的情況(圖中的步驟4),Hive將目錄移動到其倉庫而不是複製數據(步驟5)以提高效率。導入後,Sqoop MapReduce作業寫入的HDFS目錄將不存在。

Hive導入是通過--hive-import參數觸發的。就像快速連接器一樣,此選項與--as-avrodatafile和--as -sequencefile選項不兼容:

導入包含Hive分隔符的字符串

如果要導入可以包含任何Hive分隔符(\n,\r和\01字符)的列,則可能會出現下遊處理問題。在這種情況下,有兩種選擇:指定--hive-drop-import-delims,它將刪除導入部分的衝突字符,或指定--hive-delims-replacement,它將用不同的字符替換它們。

如果Hive表已存在,則數據將附加到現有表。如果這不是所需的行為,則可以使用--hive-overwrite參數指示應使用導入的數據替換現有表。Sqoop目前僅支持Hive的文本輸出,因此LZOP壓縮編解碼器是最佳選擇,因為它可以在Hadoop中拆分(詳見第4章)。以下示例顯示如何結合使用--hive-overwrite LZOP壓縮。為此,我們需要在集群上構建並安裝LZOP,因為默認情況下它不與Hadoop(或CDH)捆綁在一起。有關詳細信息,請參閱第4章(連結見文末):

最後,我們可以使用--hive-partition-key和--hive-partition-value參數根據要導入的列的值創建不同的Hive分區。例如,如果要按stock名稱對輸入進行分區,請執行以下操作:

現在,前面的例子無論如何都不是最優的。理想情況下,單個導入將能夠創建多個Hive分區。因為僅限於指定單個鍵和值,所以每個唯一的分區值需要運行一次導入,這很費力。最好導入到未分區的Hive表中,然後在加載後在表上追溯創建分區。

此外,提供給Sqoop的SQL查詢還必須注意過濾掉結果,以便僅包含與分區匹配的那些。換句話說,如果Sqoop用符號=「AAPL」更新WHERE子句,那將會很有用。

連續Sqoop執行

如果需要定期安排導入HDFS,Oozie可以進行Sqoop集成,允許定期執行導入和導出。Oozie workflow.xml示例如下:

<command>元素中不支持單引號和雙引號,因此如果需要指定包含空格的參數,則需要使用<arg>元素:

使用Oozie的Sqoop時的另一個考慮因素是需要為Oozie提供JDBC驅動程序JAR。我們可以將JAR複製到工作流的lib/目錄中,也可以使用JAR更新Hadoop安裝的lib目錄。

總結

顯然,要使Sqoop工作,Hadoop集群節點需要能夠訪問MySQL資料庫。常見的錯誤來源是錯誤配置或缺少Hadoop節點的連接。登錄到其中一個Hadoop節點並嘗試使用MySQL客戶端連接到MySQL伺服器或嘗試使用mysqldump實用程序(如果使用的是快速連接器)可能是明智的。

使用快速連接器的另一個重點是,假設mysqldump安裝在每個Hadoop節點上,並且位於運行map任務的用戶路徑中。本節內容的重點是將傳統關係資料庫的數據導入Hadoop,接下來,我們將從關係存儲轉換到NoSQL存儲—HBase,後者擅長與Hadoop的數據互操作,因為它使用HDFS存儲數據。大多數企業的關鍵數據存在於OLTP資料庫中,存儲在這些資料庫中的數據包含有關用戶,產品和其他有用信息。如果要分析此數據,傳統方法是定期將該數據複製到OLAP數據倉庫中。Hadoop已經出現在這個領域並扮演了兩個角色:數據倉庫的替代品;結構化、非結構化數據和數據倉庫之間的橋梁。圖5.8顯示了第一個角色,其中Hadoop在將數據導到OLAP系統(BI應用程式的常用平臺)之前用作大規模加入和聚合工具。

(註:本文為《Hadoop從入門到精通》大型專題的第五章內容,本專題的其他文章見文末連結,專題的上半部也將於不久之後與大家見面,請持續關注本專題!)

圖5.8 使用Hadoop進行OLAP數據輸入輸出和處理

以Facebook為例,該企業已成功利用Hadoop和Hive作為OLAP平臺來處理數PB數據。圖5.9顯示了類似於Facebook的架構。該體系結構還包括OLTP系統的反饋循環,可用於推送在Hadoop中發現的洞察,例如為用戶提供建議。

在任一使用模型中,我們都需要一種將關係數據引入Hadoop的方法,還需要將其輸出到關係資料庫中。本節,我們將使用Sqoop簡化將關係數據輸出到Hadoop的過程。

實踐:使用Sqoop從MySQL導入數據

Sqoop是一個可用於將關係數據輸入和輸出Hadoop的項目。它是一個很好的高級工具,封裝了與關係數據移動到Hadoop相關的邏輯,我們需要做的就是為Sqoop提供確定輸出哪些數據的SQL查詢。該技術提供了有關如何使用Sqoop將MySQL中的某些數據移動到HDFS的詳細信息。

圖5.9 使用Hadoop進行OLAP並反饋到OLTP系統

本節使用Sqoop 1.4.4版本,此技術中使用的代碼和腳本可能無法與其他版本的Sqoop一起使用,尤其是Sqoop 2,它是作為Web應用程式實現的。

問題

將關係數據加載到集群中,並確保寫入有效且冪等。

解決方案

在這種技術中,我們將看到如何使用Sqoop作為將關係數據引入Hadoop集群的簡單機制。我們會介紹將數據從MySQL導入Sqoop的過程,還將介紹使用快速連接器的批量導入(連接器是提供資料庫讀寫訪問的特定於資料庫的組件)。

討論

Sqoop是一個關係資料庫輸入和輸出系統,由Cloudera創建,目前是Apache項目。

執行導入時,Sqoop可以寫入HDFS、Hive和HBase,對於輸出,它可以執行相反操作。導入分為兩部分:連接到數據源以收集統計信息,然後觸發執行實際導入的MapReduce作業。圖5.10顯示了這些步驟。

圖5.10 Sqoop導入:連接到數據源並使用MapReduce

Sqoop有連接器的概念,它包含讀寫外部系統所需的專用邏輯。Sqoop提供兩類連接器:用於常規讀取和寫入的通用連接器,以及使用資料庫專有批處理機制進行高效導入的快速連接器。圖5.11顯示了這兩類連接器及其支持的資料庫。

圖5.11用於讀寫外部系統的Sqoop連接器

在繼續之前,我們需要訪問MySQL資料庫,並且MySQL JDBC JAR需要可用。以下腳本將創建必要的MySQL用戶和模式並加載數據。該腳本創建了一個hip_sqoop_user MySQL用戶,並創建了包含三個表的sqoop_test資料庫:stocks,stocks_export和stocks_staging。然後,它將stock樣本數據加載到表中。所有這些步驟都通過運行以下命令來執行:

這是快速瀏覽腳本功能:  

第一個Sqoop命令是基本導入,在其中指定MySQL資料庫和要導出的表連接信息:

MySQL表名稱

Linux中的MySQL表名稱區分大小寫,確保在Sqoop命令中提供的表名使用正確的大小寫。

默認情況下,Sqoop使用表名作為HDFS中的目標目錄,用於執行導入的MapReduce作業。如果再次運行相同的命令,MapReduce作業將失敗,因為該目錄已存在。

我們來看看HDFS中的stocks目錄:

導入數據格式

Sqoop已將數據導入為逗號分隔的文本文件。它支持許多其他文件格式,可以使用表5.6中列出的參數激活它們。

表5.6 控制導入文件格式的Sqoop參數

如果要導入大量數據,則可能需要使用Avro等文件格式,這是一種緊湊的數據格式,並將其與壓縮結合使用。以下示例將Snappy壓縮編解碼器與Avro文件結合使用。它還使用--target-dir選項將輸出寫入表名的不同目錄,並指定應使用--where選項導入行的子集。可以使用--columns指定要提取的特定列:

請注意,必須在io.compression.codecs屬性下的配置文件core-site.xml中定義在命令行上提供的壓縮。Snappy壓縮編解碼器要求安裝Hadoop本機庫。有關壓縮設置和配置等更多詳細信息,請參見第4章,連結見文末。

可以通過引入AvroDump工具來了解Avro文件結構,以了解Sqoop如何布局記錄。Sqoop使用Avro的GenericRecord進行記錄級存儲(有關詳細信息,請參閱第3章,連結見文末)。如果針對HDFS中Sqoop生成的文件運行AvroDump,將看到以下內容:

將Sqoop與SequenceFiles結合使用

SequenceFiles難以使用的一個原因是,沒有通用的方法來訪問SequenceFile中的數據。必須有權訪問用於寫入數據的Writable類。在Sqoop的情況下,代碼可生成此文件,這引入了一個主要問題:如果轉移到較新版本的Sqoop,並且該版本修改了代碼生成器,那麼舊代碼生成的類可能無法與SequenceFiles一起使用。需要將所有舊的SequenceFiles遷移到新版本,或者具有可以使用這些SequenceFiles不同版本的代碼。由於此限制,不建議將SequenceFiles與Sqoop一起使用。如果正在尋找有關SequenceFiles如何工作的更多信息,請運行Sqoop導入工具並查看在工作目錄中生成的stocks.java文件。

可以更進一步,使用--query選項指定整個查詢,如下所示:

保護密碼

到目前為止,我們一直在命令行中使用明文密碼,這是一個安全漏洞,因為主機上的其他用戶可以輕鬆列出正在運行的進程並查看密碼。幸運的是,Sqoop有一些機制可以用來避免密碼洩露。

第一種方法是使用-P選項,這將導致Sqoop提示輸入密碼。這是最安全的方法,因為它不需要存儲密碼,但這意味著無法自動執行Sqoop命令。

第二種方法是使用--password-file選項,可以在其中指定包含密碼的文件。請注意,此文件必須存在於已配置的文件系統中(通常可能是HDFS),而不是存在於Sqoop客戶端本地磁碟上。你可能希望鎖定文件,以便只有你對此文件具有讀取權限。 這仍然不是最安全的選項,因為文件系統上的root用戶仍然可以窺探文件,除非運行安全級別較高的Hadoop,否則即使非root用戶也可以輕鬆訪問。

最後一個選項是使用選項文件。創建一個名為/.sqoop-import-opts的文件:  

不要忘記鎖定文件以避免用戶窺探:

然後,我們可以通過--options-file選項將此文件名提供給Sqoop作業,Sqoop將讀取文件中指定的選項,這意味著無需在命令行上提供它們:

數據拆分

Sqoop如何在多個mapper之間並行化導入?在圖5.10中,我展示了Sqoop的第一步是如何從資料庫中提取元數據。它檢查導入的表以確定主鍵,並運行查詢以確定表中數據的下限和上限(見圖5.12)。Sqoop假設在最小和最大鍵內的數據接近均勻分布,因為它將delta(最小和最大鍵之間的範圍)按照mapper數量拆分。然後,為每個mapper提供包含一系列主鍵的唯一查詢。

圖5.12 確定查詢拆分的Sqoop預處理步驟

我們可以將Sqoop配置為使用帶有--split-by參數的非主鍵,這在最小值和最大值之間沒有均勻分布的情況下非常有用。但是,對於大型表,需要注意--split-by中指定的列已編制索引以確保最佳導入時間,可以使用--boundary-query參數構造備用查詢以確定最小值和最大值。

增量導入

Sqoop支持兩種導入類型:追加用於隨時間遞增的數值數據,例如自動增量鍵;lastmodified適用於帶時間戳的數據。在這兩種情況下,都需要使用--check-column指定列,通過--incremental參數指定模式(值必須是append或lastmodified),以及用於通過--last-value確定增量更改的實際值。

例如,如果要導入2005年1月1日更新的stock數據,則執行以下操作:

假設還有另一個系統繼續寫入該表,可以使用此作業的--last-value輸出作為後續Sqoop作業的輸入,這樣只會導入比該日期更新的行。

相關焦點

  • 如何將數據移入和移出Hadoop?
    【IT168 評論】企業在項目中完全使用Hadoop之前,數據移動是必須解決的事情之一。如何將數千臺主機日誌數據放入Hadoop?從關係型或者No/NewSQL系統以及Hadoop中獲取數據的最有效方法是什麼?如何將Hadoop中生成的Lucene索引輸出到伺服器?這些流程如何實現自動化?
  • 使用sqoop在MySQL、hadoop、hive間同步數據
    MySQL 的數據導入到 HDFS 中/usr/local/service/sqoop/bin/sqoop-import \--connect jdbc:mysql://$mysqlIP/test \--username root \-P --table sqoop_test \-m 4 \--target-dir /sqoop \--fields-terminated-by
  • Hadoop生態圈
    本章講一下關於大數據技術hadoop,直接步入正題,在了解hadoop之前,先來說一下什麼是大數據?一.大數據1.概述:是指無法在一定時間範圍內無法用常規軟體工具進行捕捉、管理和處理的數據集合,需要使用新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。主要解決海量數據的存儲和分析計算問題。
  • 從Neo4j導入Nebula實踐見SPark數據導入原理
    本文主要講述如何使用數據導入工具 Nebula Graph Exchange 將數據從 Neo4j 導入到 Nebula在講述如何實操數據導入之前,我們先來了解下 Nebula Graph 內部是如何實現這個導入功能的。Nebula Graph Exchange 的數據處理原理我們這個導入工具名字是 Nebula Graph Exchange,採用 Spark 作為導入平臺,來支持海量數據的導入和保障性能。
  • Hadoop實踐先行 曙光金融大數據方案
    【IT168 方案】金融行業信息化已經逐漸普及,但是隨著網際網路技術和應用的飛速發展,尤其是發卡量和網上交易量激增,如何對這些個性化的交易進行監管和交易行為進行分析,欺詐偵測,發現和驅動新的業務,相關業務數據量急劇上升,是當前金融業在面臨大數據的難題,同時由於關係型資料庫的架構在面臨大數據處理的先天性不足的原因,金融業亟待新的方法和技術來解決這些問題
  • Hadoop工具生態系統指南 | 網際網路數據資訊網-199IT | 中文網際網路...
    HadoopApache hadoop項目負責開發可靠的、可擴展的分布式計算開源軟體。網址:hadoop.apache.org HDFS分布式文件系統提供高速的應用數據訪問。網址:hadoop.apache.org/hdfs/ MapReduce在計算機集群上進行大數據分布式處理的軟體框架。
  • Greenplum轉身:Hadoop是資料庫的未來
    在接下來的幾年中,Hadoop不僅在改造了Facebook和雅虎,也改造了許多其他Web服務的數據分析。然後一大批的商業軟體供應商開始將Hadoop銷售到其他領域。很快地,即使是像甲骨文和Greenplum這樣的企業也在兜售Hadoop。Hadoop在這些公司仍然被視為傳統資料庫的一種輔助 - 作為一種工具,只適合某些類型的數據分析。但現在,這也在發生變化。
  • Hadoop大數據面試題全版本
    partition的主要作用將map階段產生的所有kv對分配給不同的reducer task處理,可以將reduce階段的處理負載進行分攤13.0 hive內部表和外部表的區別Hive 向內部表導入數據時,會將數據移動到數據倉庫指向的路徑;若是外部表,數據的具體存放目錄由用戶建表時指定在刪除表的時候,內部表的元數據和數據會被一起刪除,
  • 大數據核心技術是什麼 怎麼掌握Hadoop知識
    Hive:  Apache Hive是Hadoop的一個數據倉庫系統,促進了數據的綜述(將結構化的數據文件映射為一張資料庫表)、即席查詢以及存儲在Hadoop兼容系統中的大型數據集分析。  HBase:  Apache HBase是Hadoop資料庫,一個分布式、可擴展的大數據存儲。
  • 好程式設計師大數據培訓之Hadoop常見問題
    a.首先大數據的應用開發和hadoop集群的規模是沒有關係,你指的是集群的搭建和運維嗎,對於商用的hadoop系統來說涉及到很多東西。   b.任務的分配是有hadoop的調度器的調度策略決定的,默認為FIFO調度,商業集群一般使用多隊列多用戶調度器。
  • EXCEL中如何導入Access資料庫
    EXCEL中如何導入Access資料庫 這裡簡單介紹一下Access數據,access數據是指利用office Access程序創建的資料庫,但是有資料庫如何調取也是讓人頭疼的,今天簡單的介紹一下簡單操作,將需要的數據從
  • hadoop基礎知識介紹_hadoop是什麼語言開發的_hadoop能做什麼
    Hadoop=HDFS(文件系統,數據存儲技術相關)+ Mapreduce(數據處理),Hadoop的數據來源可以是任何形式,在處理半結構化和非結構化數據上與關係型資料庫相比有更好的性能,具有更靈活的處理能力,不管任何數據形式最終會轉化為key/value,key/value是基本數據單元。
  • hadoop是什麼_華為大數據平臺hadoop你了解多少
    打開APP hadoop是什麼_華為大數據平臺hadoop你了解多少 發表於 2017-12-25 16:46:13   Hadoop
  • 淺談Hadoop系統架構與海量數據分析
    6、Hadoop底層實現原理  典型的Hadoop離線分析系統架構  實時數據分析一般用於金融、移動和網際網路B2C等產品,往往要求在數秒內返回上億行數據的分析,要滿足這樣的需求,可以採用精心設計的傳統關係型資料庫組成並行處理集群,但需要耗費比較高的軟硬體成本。目前比較新的海量數據實時分析工具有EMC的Greenplum、SAP的HANA等。
  • 這是一篇長篇入門級資料庫講解:oracle資料庫數據導入導出步驟
    oracle資料庫數據導入導出步驟(入門)說明:1.資料庫數據導入導出方法有多種,可以通過exp/imp命令導入導出,也可以用第三方工具導出,如:plsql2.如果熟悉命令賦予用戶權限 因為要用該用戶進行導入操作,故應給予用戶的權限至少包括dba、IMP_FULL_DATABASE權限,也有人建議應與導出資料庫數據時用戶的權限一致。
  • 大數據的採集與預處理(Sqoop/Flume/Kafka)詳細總結
    雖然採集端本身有很多資料庫,但是如果要對這些海量數據進行有效的分析,還是應該將這些數據導入到一個集中的大型分布式資料庫或者分布式存儲集群當中,同時,在導入的基礎上完成數據清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對數據進行流式計算,來滿足部分業務的實時計算需求。
  • 條碼標籤列印軟體如何通過資料庫導入數據批量生成標籤
    在我們製作標籤的時候,難免有時候需要輸入大量的數據信息,為了節省時間和方便操作,條碼標籤列印軟體有一個功能可以通過資料庫導入產品信息,然後批量生成產品標籤。也就是不需要手動輸入任何數據,只有你有一個整理好所有產品信息的文件,就可以通過資料庫導入批量製作並生成產品標籤。
  • 大數據常見問題,HBase vs 傳統關係型資料庫
    一、存儲的量級在傳統的關係型資料庫中,隨著數據量的增大,查詢速度會越來越慢,一張有上百個欄位的數據表在有千萬級別的數據量時,響應速度會變的非常緩慢。而HBase是一個分布式的數據存儲系統,他的建立是基於HDFS的。其設計的初衷就是為了解決傳統關係型資料庫在處理海量數據時,速度太慢的問題。
  • MySQL數據導入篇,用LOAD DATA INFILE將TXT數據導入MySQL資料庫
    MySQL允許將數據導出到外部文件,自然也允許將外部文件導入資料庫,本文為大家講解使用LOAD DATA INFILE從外部文本文件高速地讀取行導入數據表中語法結構LOAD DATA INFILE 『filename.txt』 INTO TABLE tablename
  • Hadoop大數據平臺數據倉庫hive與資料庫hbase集成
    Hive提供了與hbase的集成,能夠在Hive上使用HQL語句進行查詢、插入、Join和Union等複雜查詢HBase表數據功能。可以將ETL數據存入HBase表。可以使用HBase提供的低延時數據倉庫。