1. 程式人生 > >談談我對大資料技術的一些理解。

談談我對大資料技術的一些理解。

近來專案組準備把批量遷移到大資料環境下,再加上新的業務需求,需要進行一些大規模資料的加工,所以號召團隊往大資料方向靠,最近我也買了幾本書,網上找了一些資料學習了一下,所以想談談自己對這門技術的粗略瞭解。
大資料技術最近的火熱,主要源自於google的三篇論文,
Google File System中文版
Google Bigtable中文版
Google MapReduce中文版
這幾篇文章,因為時間原因,也沒有時間去全部閱讀,只是大概的有所瞭解。
HDFS 架構
首先就是大資料的儲存基礎,HDFS。HDFS分散式的儲存資料,在多個節點上備份資料,使得資料的儲存成本大大降低。高容錯性、適合批處理、成本低、適合大資料處理。這些都是其非常顯著的優點。
MAPREDUCE


分散式計算引擎,通過MAP操作,將任務分為多個子任務,分配給叢集,而Reduce工作將各個叢集的計算結果合在一起,返回給排程者。因為期間的工作,需要多次的跟硬碟進行IO操作,所以極大的影響了效率,以至於後面出現更加優秀的SPARK計算引擎。
現在,在面對大規模資料的時候,我們能把資料存起來,同時,我們還能夠把資料進行彙總。但是,用MapReduce直接進行程式設計,試過的人都知道,這是一件非常痛苦的事情。而,我們已經非常習慣使用關係型資料庫,使用SQL語句去操作資料。故,HIVE出現了,我們在前臺寫入SQL語句,HIVE自動的將其翻譯成MapReduce操作,極大的砍去了開發MapRedeuce程式的冗餘工作。
這裡需要提一下Hbase
,很多同學分不清兩者的的關係,HBase是一種NoSQL,通常被稱為Hadoop Database,就是一種資料庫。在非關係型資料庫中,我們可以把HBase看成是Oracle,而HIVE就是SQLdevelopler。
後來,我們用著用著,發現HIVE因為底層的原因,還是不好用,比較慢,這時候,Cloudera公司的impala就出現了。Impala沒有再使用緩慢的 Hive+MapReduce批處理,而是通過使用與商用並行關係資料庫中類似的分散式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或HBase中用SELECT、JOIN和統計函式查詢資料,從而大大降低了延遲。
上文提到了,因為mapreduce操作,在分散式計算中,需要多次跟硬碟進行IO操作,我們就在想,有沒有一種可能,在分散式計算時,儘量少的於硬碟進行IO,而是跟記憶體進行IO。這個時候,Spark
誕生了。
今天先寫到這裡,以後再寫。。。