在大資料的背景下,微軟似乎並不像其他資料庫廠商一樣在高調宣傳他們的大資料產品或解決方案。 而在應對大資料挑戰方面,倒是一些互聯網巨頭走在最前面,比如Google和Yahoo,前者每天都要處理20 PB的資料量,其中一大部分是基於文檔的索引檔。 當然,如此界定大資料是不准確的,它並不僅限於索引,企業中的電子郵件、文檔、Web伺服器日誌、社交網路資訊以及其他所有非結構化的資料庫都是構成大資料的一部分。
為了應對這些資料的挑戰,像Autodesk、IBM 、Facebook當然還包括Google和Yahoo,都毫無例外地部署了Apache Hadoop開源平臺。 微軟也注意到這一趨勢,所以在他們的資料庫平臺中添加了Hadoop連接器。 該連接器可以讓企業將海量的資料在Hadoop集群和SQL Server 2008 R2、並行資料倉儲以及最新的SQL Server 2012(Denali)之間進行自由的移動。 由於連接器可以讓資料雙向移動,所以使用者不僅可以利用SQL Server所提供的強大的存儲以及資料處理功能,還可以用Hadoop來管理海量的非結構化資料集。
但是傳統的微軟使用者對於SQL Server Hadoop連接器還比較陌生,使用起來會很不習慣。 該連接器是一個部署在Linux環境中的命令列工具,在本文中,我們就將為您具體講解一下SQL Server Hadoop連接器的工作原理。
Apache Hadoop集群
Hadoop是一個主-從架構,部署在Linux主機的集群中。 想要處理海量資料,Hadoop環境中必須包含一下元件:
-主節點管理從節點,主要涉及處理、管理和訪問資料檔案。 當外部應用對Hadoop環境發送作業請求時,主節點還要作為主存取點。
- 命名節點運行NameNode幕後程式,管理Hadoop分散式檔案系統(HDFS)的命名空間並控制資料檔案的訪問。 該節點支援以下操作,如打開、關閉、重命名以及界定如何映射資料塊。 在小型環境中,命名節點可以同主節點部署在同一台伺服器上。
- 每一個從節點都運行DataNode幕後程式,管理資料檔案的存儲並處理檔的讀寫請求。 從節點由標準硬體組成,該硬體相對便宜,隨時可用。 可以在上千台電腦上運行平行作業。
下圖給出了Hadoop環境中各個元件的相互關係。 注意主節點運行JobTracker程式,每個從節點運行TaskTracker程式。 JobTracker用來處理用戶端應用的請求,並將其分配到不同的TaskTracker實例上。 當它從JobTracker那裡接收到指令之後,TaskTracker將同DataNode程式一同運行分配到的任務,並處理每個操作階段中的資料移動。
你必須將SQL Server Hadoop連接器部署在Hadoop集群之內
MapReduce框架
再如上圖所示,主節點支援MapReduce框架,這一技術是依賴于Hadoop環境之上的。 事實上,你可以把Hadoop想像成一個MapReduce框架,而這個框架中會有JobTracker和TaskTracker來扮演關鍵的角色。
MapReduce將大型的資料集打散成小型的、可管理的資料塊,並分佈到上千台主機當中。 它還包含一系列的機制,可以用來運行大量的平行作業,搜索PB級別的資料,管理複雜的用戶端請求並對資料進行深度的分析。 此外,MapReduce還提供負載平衡以及容錯功能,保證操作能夠迅速並準確地完成。
MapReduce和HDFS架構是緊密結合在一起的,後者將每個檔存儲為數據塊的序列。 資料塊是跨集群複製的,除了最後的資料塊,檔中的其他資料塊大小都相同。 每一個從節點的DataNode程式會同HDFS一起創建、刪除並複製資料塊。 然而,一個HDFS檔只可以被寫一次。
SQL Server Hadoop連接器
使用者需要將SQL Server Hadoop連接器部署到Hadoop集群的主節點上。 主節點還需要安裝Sqoop和微軟的JAVA資料庫連接驅動。 Sqoop是一個開源命令列工具,用來從關聯式資料庫導入資料,並使用Hadoop MapReduce框架進行資料轉換,然後將資料重新導回資料庫當中。
當SQL Server Hadoop連接器部署完畢之後,你可以使用Sqoop來導入匯出SQL Server資料。 注意,Sqoop和連接器是在一個Hadoop的集中視圖下進行操作的,這意味著當你使用Sqoop導入資料的時候是從SQL Server資料庫檢索資料並添加到Hadoop環境中,而相反地, 匯出資料是指從Hadoop中檢索資料併發送到SQL Server資料庫當中。
Sqoop導入匯出的資料支援一些存儲類型:
-文字檔:基礎的文字檔,用逗號等相隔;
- 序列檔:二進位檔案,包含序列化記錄資料;
- Hive表:H ive資料倉儲中的表,這是針對Hadoop構建的一種特殊的資料倉儲架構。
總體來說,SQL Server和Hadoop環境(MapReduce和HDFS)能夠讓使用者處理海量的非結構化資料,並將這部分資料整合到一個結構化的環境中,進行報表製作以及BI分析。
微軟大資料策略才剛剛開始
SQL Server Hadoop連接器在微軟大資料之路上算是邁出了重要的一步。 但與此同時,由於Hadoop、Linux和Sqoop都是開源技術,這意味著微軟要對開源世界大規模地敞開胸懷。 其實微軟的計畫並不只如此,在今年年底,他們還將推出一個類似于Hadoop的解決方案,並以服務的形式運行在Windows Azure雲平臺上。
在明年,微軟還計畫推出針對Windows Server平臺的類似服務。 不能否認,SQL Server Hadoop連接器對於微軟來說意義重大,使用者可以在SQL Server環境中處理大資料挑戰,相信在未來他們還會帶給我們更多的驚喜。
(責任編輯:蒙遺善)