SQL Server Hadoop:開拓大數(shù)據(jù)新疆域
在大數(shù)據(jù)的背景下,微軟似乎并不像其他數(shù)據(jù)庫廠商一樣在高調(diào)宣傳他們的大數(shù)據(jù)產(chǎn)品或解決方案。而在應(yīng)對大數(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ù)庫都是構(gòu)成大數(shù)據(jù)的一部分。
為了應(yīng)對這些數(shù)據(jù)的挑戰(zhàn),像Autodesk、IBM 、Facebook當(dāng)然還包括Google和Yahoo,都毫無例外地部署了Apache Hadoop開源平臺。微軟也注意到這一趨勢,所以在他們的數(shù)據(jù)庫平臺中添加了Hadoop連接器。該連接器可以讓企業(yè)將海量的數(shù)據(jù)在Hadoop集群和SQL Server 2008 R2、并行數(shù)據(jù)倉庫以及***的SQL Server 2012(Denali)之間進(jìn)行自由的移動。由于連接器可以讓數(shù)據(jù)雙向移動,所以用戶不僅可以利用SQL Server所提供的強(qiáng)大的存儲以及數(shù)據(jù)處理功能,還可以用Hadoop來管理海量的非結(jié)構(gòu)化數(shù)據(jù)集。
但是傳統(tǒng)的微軟用戶對于SQL Server Hadoop連接器還比較陌生,使用起來會很不習(xí)慣。該連接器是一個部署在Linux環(huán)境中的命令行工具,在本文中,我們就將為您具體講解一下SQL Server Hadoop連接器的工作原理。
Apache Hadoop集群
Hadoop是一個主-從架構(gòu),部署在Linux主機(jī)的集群中。想要處理海量數(shù)據(jù),Hadoop環(huán)境中必須包含一下組件:
- 主節(jié)點管理從節(jié)點,主要涉及處理、管理和訪問數(shù)據(jù)文件。當(dāng)外部應(yīng)用對Hadoop環(huán)境發(fā)送作業(yè)請求時,主節(jié)點還要作為主接入點。
- 命名節(jié)點運行NameNode后臺程序,管理Hadoop分布式文件系統(tǒng)(HDFS)的命名空間并控制數(shù)據(jù)文件的訪問。該節(jié)點支持以下操作,如打開、關(guān)閉、重命名以及界定如何映射數(shù)據(jù)塊。在小型環(huán)境中,命名節(jié)點可以同主節(jié)點部署在同一臺服務(wù)器上。
- 每一個從節(jié)點都運行DataNode后臺程序,管理數(shù)據(jù)文件的存儲并處理文件的讀寫請求。從節(jié)點由標(biāo)準(zhǔn)硬件組成,該硬件相對便宜,隨時可用??梢栽谏锨_計算機(jī)上運行并行操作。
下圖給出了Hadoop環(huán)境中各個組件的相互關(guān)系。注意主節(jié)點運行JobTracker程序,每個從節(jié)點運行TaskTracker程序。JobTracker用來處理客戶端應(yīng)用的請求,并將其分配到不同的TaskTracker實例上。當(dāng)它從JobTracker那里接收到指令之后,TaskTracker將同DataNode程序一同運行分配到的任務(wù),并處理每個操作階段中的數(shù)據(jù)移動。
你必須將SQL Server Hadoop連接器部署在Hadoop集群之內(nèi)
MapReduce框架
再如上圖所示,主節(jié)點支持MapReduce框架,這一技術(shù)是依賴于Hadoop環(huán)境之上的。事實上,你可以把Hadoop想象成一個MapReduce框架,而這個框架中會有JobTracker和TaskTracker來扮演關(guān)鍵的角色。
MapReduce將大型的數(shù)據(jù)集打散成小型的、可管理的數(shù)據(jù)塊,并分布到上千臺主機(jī)當(dāng)中。它還包含一系列的機(jī)制,可以用來運行大量的并行操作,搜索PB級別的數(shù)據(jù),管理復(fù)雜的客戶端請求并對數(shù)據(jù)進(jìn)行深度的分析。此外,MapReduce還提供負(fù)載平衡以及容錯功能,保證操作能夠迅速并準(zhǔn)確地完成。
MapReduce和HDFS架構(gòu)是緊密結(jié)合在一起的,后者將每個文件存儲為數(shù)據(jù)塊的序列。數(shù)據(jù)塊是跨集群復(fù)制的,除了***的數(shù)據(jù)塊,文件中的其他數(shù)據(jù)塊大小都相同。每一個從節(jié)點的DataNode程序會同HDFS一起創(chuàng)建、刪除并復(fù)制數(shù)據(jù)塊。然而,一個HDFS文件只可以被寫一次。
SQL Server Hadoop連接器
用戶需要將SQL Server Hadoop連接器部署到Hadoop集群的主節(jié)點上。主節(jié)點還需要安裝Sqoop和微軟的Java數(shù)據(jù)庫連接驅(qū)動。Sqoop是一個開源命令行工具,用來從關(guān)系型數(shù)據(jù)庫導(dǎo)入數(shù)據(jù),并使用Hadoop MapReduce框架進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后將數(shù)據(jù)重新導(dǎo)回數(shù)據(jù)庫當(dāng)中。
當(dāng)SQL Server Hadoop連接器部署完畢之后,你可以使用Sqoop來導(dǎo)入導(dǎo)出SQL Server數(shù)據(jù)。注意,Sqoop和連接器是在一個Hadoop的集中視圖下進(jìn)行操作的,這意味著當(dāng)你使用Sqoop導(dǎo)入數(shù)據(jù)的時候是從SQL Server數(shù)據(jù)庫檢索數(shù)據(jù)并添加到Hadoop環(huán)境中,而相反地,導(dǎo)出數(shù)據(jù)是指從Hadoop中檢索數(shù)據(jù)并發(fā)送到SQL Server數(shù)據(jù)庫當(dāng)中。
Sqoop導(dǎo)入導(dǎo)出的數(shù)據(jù)支持一些存儲類型:
- 文本文件:基礎(chǔ)的文本文件,用逗號等相隔;
- 序列文件:二進(jìn)制文件,包含序列化記錄數(shù)據(jù);
- Hive表:Hive數(shù)據(jù)倉庫中的表,這是針對Hadoop構(gòu)建的一種特殊的數(shù)據(jù)倉庫架構(gòu)。
總體來說,SQL Server和Hadoop環(huán)境(MapReduce和HDFS)能夠讓用戶處理海量的非結(jié)構(gòu)化數(shù)據(jù),并將這部分?jǐn)?shù)據(jù)整合到一個結(jié)構(gòu)化的環(huán)境中,進(jìn)行報表制作以及BI分析。
微軟大數(shù)據(jù)策略才剛剛開始
SQL Server Hadoop連接器在微軟大數(shù)據(jù)之路上算是邁出了重要的一步。但與此同時,由于Hadoop、Linux和Sqoop都是開源技術(shù),這意味著微軟要對開源世界大規(guī)模地敞開胸懷。其實微軟的計劃并不只如此,在今年年底,他們還將推出一個類似于Hadoop的解決方案,并以服務(wù)的形式運行在Windows Azure云平臺上。
在明年,微軟還計劃推出針對Windows Server平臺的類似服務(wù)。不能否認(rèn),SQL Server Hadoop連接器對于微軟來說意義重大,用戶可以在SQL Server環(huán)境中處理大數(shù)據(jù)挑戰(zhàn),相信在未來他們還會帶給我們更多的驚喜。
【編輯推薦】