轉帖|使用教程|編輯:龔雪|2014-09-02 09:40:40.000|閱讀 462 次
概述:大數據是一個流行語。和許多流行語一樣,大數據這個詞用得有些濫了,但是它包含了一些真正的有用性和技術。我們決定在這個主題上對大數據進行一番分析,努力挖掘其中的真實性以及它們對存儲解決方案的意義。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Henry和我正在進行一項檢查大數據以及其真正意義的工作。大數據是一個流行語。和許多流行語一樣,大數據這個詞用得有些濫了,但是它包含了一些真正的有用性和技術。我們決定在這個主題上對大數據進行一番分析,努力挖掘其中的真實性以及它們對存儲解決方案的意義。
Henry用一個很好的介紹開始了這個系列。他對大數據的定義是我所見過的最好的定義。因此,我將重復這個定義:
大數據是將數據變為信息然后變為知識的過程。
這個定義很恰當,因為形容詞“大”可以表達很多種意思。一些人將“大”想象成他們所專注的領域中的意思,而我們則專注于你可以在這個數據上做什么以及為什么。
Henry和我決定用兩個部分來進行這個討論。Henry從最基本的硬件本身開始,然后向上討論堆棧。更準確的是,他想知道的是硬件的哪些方面對大數據而言很重要,以及哪些技術是重要的。我則從大數據堆棧的頂端開始,也就是應用程序,然后向下討論堆棧。我們將在中間某處會合,然后將我們的想法和評論歸納到最終的一篇文章中。
從頂端開始并不容易,我原來的文章變得很長。因此,我們一起決定將它分成三個部分。第一個部分從討論堆棧頂端的一些基本問題開始,包括將數據引入到存儲系統以供使用的重要性(這個部分比大部分人所認識到的還要重要)。它還討論了大數據最常見的工具——NoSQL數據庫。第二個部分分析了8個使用于大數據并影響存儲的NoSQL數據庫類型。最后一個關于堆棧頂端的部分則將討論Hadoop在大數據中的角色以及所有這些東西是如何聯系到R這樣的分析工具。
與Hadoop的聯系
在以前的文章中所提到過的所有的數據庫都需要一個地方來存儲它們的數據,同時性能也是它們的一個重要組成部分。我們所提到過的一些工具與將Hadoop作為存儲平臺有聯系。Hadoop實際上不是一個文件系統,實際上,它是一個軟件框架,支持數據密集型分布式應用程序,比如這里所討論的一些以及以前的文章所討論過的一些應用程序。在與MapReduce在一起協同工作的時候,Hadoop可以成為一個針對數據密集型應用程序的非常有效的解決方案。
Hadoop File System(HDFS:Hadoop文件系統)是一個發端于谷歌文件系統(GFS:Google File System)的開源文件系統。但是,GFS是谷歌專用的。Hadoop是用Java編寫的,是一個分布式文件系統,是真正的元文件系統——換句話說,是一個可以作用于底層文件系統頂端的文件系統。它的設計旨在成為一個容錯的文件系統,讓數據的副本可以存儲在文件系統內不同的地點上,因此從錯誤的數據副本或宕機的服務器中恢復數據就變得相當容易。不過,這些副本也可以用于改善性能。
Hadoop的基本構建塊就是所謂的“datanode”(數據節點)。這是一個一臺服務器與一些存儲和網絡的組合。存儲通常是服務器內部的或直接 連接到服務器的存儲(DAS)。每個datanode使用專門的面向HDFS的塊協議來在網絡(以太網)上提供數據。一定數量的datanode分布在多 個機架上,而每個datanode可以通過它所在機架被部分識別。Hadoop還有元數據服務器,即所謂的“Namenode”(命名節點)。 Namenode同時也是HDFS的管理節點。此外,HDFS還有二級Namenode,不過它不是故障復原元數據服務器,而是用于其他文件系統任務,比 如快照主Namenode的目錄信息以幫助減少宕機時間——如果一個Namenode發生故障的話。由于只有一個Namenode,它可能會成為一個潛在 的瓶頸或HDFS的單故障點。
HDFS的一個重要特點就是數據復制到多個datanode上以幫助提高彈性。HDFS缺省情況下會將三個數據副本存儲在不同的datanode 上。兩個副本是在同一個機架上,另一個在不同的機架上(因此,即使一個機架壞了,你還可以訪問你的數據)。你可以在那些擁有所需數據的datanode上 ——缺省情況下擁有數據副本的三個datanode之一——運行制定好的任務(注意,這些datanode在存儲數據和提供數據的同時也可以運行任務)。
這就是許多人所指的:“將任務移到數據上,而不是將數據移到任務上”。這樣做可以減少數據遷移,減少網絡負擔,因為數據不用遷移來遷移去以運行任 務。一旦任務開始運行,所有的數據訪問都是本地進行的,因此不需要datanode條帶化或使用多個數據服務器來滿足并行數據訪問。Hadoop的并行性 體現在應用程序的性能上,同一個應用程序的多個副本可以被同時運行并訪問不同的數據集。此外,由于你有三個數據副本,你可以在同一時間運行三個人物來訪問 同一個文件,因此性能也得到了改善。
在后端,datanode可以和其他datanode通信,使用RPC(遠程過程調用)來執行一系列任務:
如果你使用Java API(應用程序編程接口)、Thrift API、命令行界面或在HTTP上通過HDFS-UI界面瀏覽,在HDFS中訪問數據還是相當簡單的。除了這個,在操作系統上直接載入HDFS是不行的。唯一的解決方案是使用Linux FUSE客戶端來加載文件系統。
記住,Hadoop是基于谷歌文件系統(GFS)的,后者是用來支持谷歌的BigTable,而BigTable是面向列的數據庫。因此,Hadoop更可能支持前文所提到的那些Column Store工具。在此前提到的工具中,許多工具已經開發了面向Hadoop的界面,因此它們可以利用Hadoop來存儲數據。
來源:存儲在線
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網