SQL Server Hadoop:開(kāi)拓大數(shù)據(jù)新疆域
在大數(shù)據(jù)的背景下,微軟似乎并不像其他數(shù)據(jù)庫(kù)廠(chǎng)商一樣在高調(diào)宣傳他們的大數(shù)據(jù)產(chǎn)品或解決方案。而在應(yīng)對(duì)大數(shù)據(jù)挑戰(zhàn)方面,倒是一些互聯(lián)網(wǎng)巨頭走在最前面,比如Google和Yahoo,前者每天都要處理20 PB的數(shù)據(jù)量,其中一大部分是基于文檔的索引文件。當(dāng)然,如此界定大數(shù)據(jù)是不準(zhǔn)確的,它并不僅限于索引,企業(yè)中的電子郵件、文檔、Web服務(wù)器日志、社交網(wǎng)絡(luò)信息以及其他所有非結(jié)構(gòu)化的數(shù)據(jù)庫(kù)都是構(gòu)成大數(shù)據(jù)的一部分。
為了應(yīng)對(duì)這些數(shù)據(jù)的挑戰(zhàn),像Autodesk、IBM 、Facebook當(dāng)然還包括Google和Yahoo,都毫無(wú)例外地部署了Apache Hadoop開(kāi)源平臺(tái)。微軟也注意到這一趨勢(shì),所以在他們的數(shù)據(jù)庫(kù)平臺(tái)中添加了Hadoop連接器。該連接器可以讓企業(yè)將海量的數(shù)據(jù)在Hadoop集群和SQL Server 2008 R2、并行數(shù)據(jù)倉(cāng)庫(kù)以及***的SQL Server 2012(Denali)之間進(jìn)行自由的移動(dòng)。由于連接器可以讓數(shù)據(jù)雙向移動(dòng),所以用戶(hù)不僅可以利用SQL Server所提供的強(qiáng)大的存儲(chǔ)以及數(shù)據(jù)處理功能,還可以用Hadoop來(lái)管理海量的非結(jié)構(gòu)化數(shù)據(jù)集。
但是傳統(tǒng)的微軟用戶(hù)對(duì)于SQL Server Hadoop連接器還比較陌生,使用起來(lái)會(huì)很不習(xí)慣。該連接器是一個(gè)部署在Linux環(huán)境中的命令行工具,在本文中,我們就將為您具體講解一下SQL Server Hadoop連接器的工作原理。
Apache Hadoop集群
Hadoop是一個(gè)主-從架構(gòu),部署在Linux主機(jī)的集群中。想要處理海量數(shù)據(jù),Hadoop環(huán)境中必須包含一下組件:
- 主節(jié)點(diǎn)管理從節(jié)點(diǎn),主要涉及處理、管理和訪(fǎng)問(wèn)數(shù)據(jù)文件。當(dāng)外部應(yīng)用對(duì)Hadoop環(huán)境發(fā)送作業(yè)請(qǐng)求時(shí),主節(jié)點(diǎn)還要作為主接入點(diǎn)。
- 命名節(jié)點(diǎn)運(yùn)行NameNode后臺(tái)程序,管理Hadoop分布式文件系統(tǒng)(HDFS)的命名空間并控制數(shù)據(jù)文件的訪(fǎng)問(wèn)。該節(jié)點(diǎn)支持以下操作,如打開(kāi)、關(guān)閉、重命名以及界定如何映射數(shù)據(jù)塊。在小型環(huán)境中,命名節(jié)點(diǎn)可以同主節(jié)點(diǎn)部署在同一臺(tái)服務(wù)器上。
- 每一個(gè)從節(jié)點(diǎn)都運(yùn)行DataNode后臺(tái)程序,管理數(shù)據(jù)文件的存儲(chǔ)并處理文件的讀寫(xiě)請(qǐng)求。從節(jié)點(diǎn)由標(biāo)準(zhǔn)硬件組成,該硬件相對(duì)便宜,隨時(shí)可用。可以在上千臺(tái)計(jì)算機(jī)上運(yùn)行并行操作。
下圖給出了Hadoop環(huán)境中各個(gè)組件的相互關(guān)系。注意主節(jié)點(diǎn)運(yùn)行JobTracker程序,每個(gè)從節(jié)點(diǎn)運(yùn)行TaskTracker程序。JobTracker用來(lái)處理客戶(hù)端應(yīng)用的請(qǐng)求,并將其分配到不同的TaskTracker實(shí)例上。當(dāng)它從JobTracker那里接收到指令之后,TaskTracker將同DataNode程序一同運(yùn)行分配到的任務(wù),并處理每個(gè)操作階段中的數(shù)據(jù)移動(dòng)。

你必須將SQL Server Hadoop連接器部署在Hadoop集群之內(nèi)
MapReduce框架
再如上圖所示,主節(jié)點(diǎn)支持MapReduce框架,這一技術(shù)是依賴(lài)于Hadoop環(huán)境之上的。事實(shí)上,你可以把Hadoop想象成一個(gè)MapReduce框架,而這個(gè)框架中會(huì)有JobTracker和TaskTracker來(lái)扮演關(guān)鍵的角色。
MapReduce將大型的數(shù)據(jù)集打散成小型的、可管理的數(shù)據(jù)塊,并分布到上千臺(tái)主機(jī)當(dāng)中。它還包含一系列的機(jī)制,可以用來(lái)運(yùn)行大量的并行操作,搜索PB級(jí)別的數(shù)據(jù),管理復(fù)雜的客戶(hù)端請(qǐng)求并對(duì)數(shù)據(jù)進(jìn)行深度的分析。此外,MapReduce還提供負(fù)載平衡以及容錯(cuò)功能,保證操作能夠迅速并準(zhǔn)確地完成。
MapReduce和HDFS架構(gòu)是緊密結(jié)合在一起的,后者將每個(gè)文件存儲(chǔ)為數(shù)據(jù)塊的序列。數(shù)據(jù)塊是跨集群復(fù)制的,除了***的數(shù)據(jù)塊,文件中的其他數(shù)據(jù)塊大小都相同。每一個(gè)從節(jié)點(diǎn)的DataNode程序會(huì)同HDFS一起創(chuàng)建、刪除并復(fù)制數(shù)據(jù)塊。然而,一個(gè)HDFS文件只可以被寫(xiě)一次。
SQL Server Hadoop連接器
用戶(hù)需要將SQL Server Hadoop連接器部署到Hadoop集群的主節(jié)點(diǎn)上。主節(jié)點(diǎn)還需要安裝Sqoop和微軟的Java數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)。Sqoop是一個(gè)開(kāi)源命令行工具,用來(lái)從關(guān)系型數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù),并使用Hadoop MapReduce框架進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后將數(shù)據(jù)重新導(dǎo)回?cái)?shù)據(jù)庫(kù)當(dāng)中。
當(dāng)SQL Server Hadoop連接器部署完畢之后,你可以使用Sqoop來(lái)導(dǎo)入導(dǎo)出SQL Server數(shù)據(jù)。注意,Sqoop和連接器是在一個(gè)Hadoop的集中視圖下進(jìn)行操作的,這意味著當(dāng)你使用Sqoop導(dǎo)入數(shù)據(jù)的時(shí)候是從SQL Server數(shù)據(jù)庫(kù)檢索數(shù)據(jù)并添加到Hadoop環(huán)境中,而相反地,導(dǎo)出數(shù)據(jù)是指從Hadoop中檢索數(shù)據(jù)并發(fā)送到SQL Server數(shù)據(jù)庫(kù)當(dāng)中。
Sqoop導(dǎo)入導(dǎo)出的數(shù)據(jù)支持一些存儲(chǔ)類(lèi)型:
- 文本文件:基礎(chǔ)的文本文件,用逗號(hào)等相隔;
- 序列文件:二進(jìn)制文件,包含序列化記錄數(shù)據(jù);
- Hive表:Hive數(shù)據(jù)倉(cāng)庫(kù)中的表,這是針對(duì)Hadoop構(gòu)建的一種特殊的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)。
總體來(lái)說(shuō),SQL Server和Hadoop環(huán)境(MapReduce和HDFS)能夠讓用戶(hù)處理海量的非結(jié)構(gòu)化數(shù)據(jù),并將這部分?jǐn)?shù)據(jù)整合到一個(gè)結(jié)構(gòu)化的環(huán)境中,進(jìn)行報(bào)表制作以及BI分析。
微軟大數(shù)據(jù)策略才剛剛開(kāi)始
SQL Server Hadoop連接器在微軟大數(shù)據(jù)之路上算是邁出了重要的一步。但與此同時(shí),由于Hadoop、Linux和Sqoop都是開(kāi)源技術(shù),這意味著微軟要對(duì)開(kāi)源世界大規(guī)模地敞開(kāi)胸懷。其實(shí)微軟的計(jì)劃并不只如此,在今年年底,他們還將推出一個(gè)類(lèi)似于Hadoop的解決方案,并以服務(wù)的形式運(yùn)行在Windows Azure云平臺(tái)上。
在明年,微軟還計(jì)劃推出針對(duì)Windows Server平臺(tái)的類(lèi)似服務(wù)。不能否認(rèn),SQL Server Hadoop連接器對(duì)于微軟來(lái)說(shuō)意義重大,用戶(hù)可以在SQL Server環(huán)境中處理大數(shù)據(jù)挑戰(zhàn),相信在未來(lái)他們還會(huì)帶給我們更多的驚喜。
【編輯推薦】




















