大資料(一)——概念入門
最近在B站上看一套44集的大資料教程——經典Hadoop分散式系統基礎架構。想通過對Hadoop的學習,跳到大資料領域當中。作為大資料的開篇,主要是做一些大資料掃盲,並且重點介紹Hadoop需要學些什麼。
1.何為大資料
IBM提出大資料具有5V特點:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性);
百度擁有兩種型別的大資料:使用者搜尋表徵的需求資料;爬蟲和阿拉丁獲取的公共web資料搜尋巨頭百度圍繞資料而生;
阿里巴巴擁有交易資料和信用資料。這兩種資料更容易變現,挖掘出商業價值。除此之外阿里巴巴還通過投資等方式掌握了部分社交資料、移動資料,如微博和高德;
騰訊擁有使用者關係資料和基於此產生的社交資料。這些資料可以分析人們的生活和行為,從裡面挖掘出政治、社會、文化、商業、健康等領域的資訊,甚至預測未來。
大資料都應該具備以下幾個過程:資料採集、資料清洗、資料建模、資料加工、資料展現。
大資料時代已經到來,必須有大資料思維去發掘大資料的潛在價值,三分技術,七分資料,得資料者得天下。我們需要像維克托·邁爾-舍恩伯格一樣有大資料思維:a.需要全部資料樣本而不是抽樣;b.關注效率而不是精確度;c.關注相關性而不是因果關係
2.大資料就業方向
1)Hadoop開發工程師:解決大資料儲存問題;
2)資料分析師:資料蒐集、整理、分析,並依據資料做出行業研究、評估和預測,有點像數學建模了;
3)資料探勘工程師:從海量資料中發現規律,這就需要一定的數學知識;
4)大資料視覺化工程師:依據產品業務功能,設計符合需求的視覺化方案。
3.大資料需求
去拉勾網隨便看了看,需求是很多的。就業方向,個人認為Hadoop開發工程師比較合適,看了一下大部分要求是希望會Java、並且懂得Hadoop平臺的搭建與原理。
4.Hadoop的體系
Hadoop是一個分散式系統基礎架構。可以看成一個數據管理系統,資料分析是核心,並且彙集了結構化和非結構化的資料,這些資料分佈在傳統的企業資料棧的每一層。可以看成是一個大規模並行處理框架,擁有超級計算能力,定位於推動企業級應用的執行。也可以看成一個開源社群,主要為解決大資料的問題提供工具和軟體。
上面這張圖片介紹了Hadoop的整個生態,類似spring那種全家桶一樣,告訴我們整個框架裡都有些什麼元件。下面簡單介紹一下各個元件:
1)HDFS
Hadoop 生態圈的基本組成部分是 Hadoop 分散式檔案系統(HDFS)。HDFS 是一種資料分散式儲存機制,資料被儲存在計算機叢集上。資料寫入一次,讀取多次。HDFS為 HBase 等工具提供了基礎。
2)MapReduce
Hadoop 的主要執行框架是 MapReduce,它是一個分散式、並行處理的程式設計模型。MapReduce 把任務分為map(對映)階段和 reduce(化簡)。開發人員使用儲存在HDFS 中資料(可實現快速儲存),編寫 Hadoop 的 MapReduce 任務。由於 MapReduce工作原理的特性, Hadoop 能以並行的方式訪問資料,從而實現快速訪問資料HDFS 中資料(可實現快速儲存),編寫 Hadoop 的 MapReduce 任務。由於 MapReduce工作原理的特性, Hadoop 能以並行的方式訪問資料,從而實現快速訪問資料。
3)Hbase
HBase 是一個建立在 HDFS 之上,面向列的 NoSQL 資料庫,用於快速讀/寫大量資料。HBase 使用 Zookeeper 進行管理,確保所有元件都正常執行。
4)ZooKeeper
用於 Hadoop 的分散式協調服務。Hadoop 的許多元件依賴於 Zookeeper,它執行在計算機叢集上面,用於管理 Hadoop 操作。
5)Hive
Hive 類似於 SQL 高階語言,用於執行儲存在 Hadoop 上的查詢語句,Hive 讓不熟悉 MapReduce 開發人員也能編寫資料查詢語句,然後這些語句被翻譯為 Hadoop 上面的 MapReduce 任務。像 Pig 一樣,Hive 作為一個抽象層工具,吸引了很多熟悉 SQL 而不是 Java 程式設計的資料分析師。
6)Pig
它是 MapReduce 程式設計的複雜性的抽象。Pig 平臺包括執行環境和用於分析 Hadoop資料集的指令碼語言(Pig Latin)。其編譯器將 Pig Latin 翻譯成 MapReduce 程式序列。
7)Sqoop
是一個連線工具,用於在關係資料庫、資料倉庫和 Hadoop 之間轉移資料。Sqoop利用資料庫技術描述架構,進行資料的匯入/匯出;利用 MapReduce 實現並行化執行和容錯技術。
5.心得
Hadoop思想基本全來源於Google,前身是作為搜尋引擎的lucene。提到搜尋引擎就不得不說它面臨的兩大問題,首先大量的網頁該怎麼儲存?Google中有個Google File System,通過很多PC伺服器,把網頁釋出到各個節點,有冗餘,有排程,這就是Hadoop兩大支柱之一的HDFS;另外,當搜尋出100條結果該怎麼推送,這時候就需要評估價值,Google中通過PageRank計算,但是資料量很大,可能導致矩陣元素高達百億,算不了,PageRank會將網頁分散到各個節點,分開彙總,累加計算,進行迭代,這就是Hadoop另一大支柱MapReduce。
想到一個問題按住Ctrl不放,然後移動方向鍵,會發現游標跳躍的是分詞語進行,這也說明用到了分詞器啥的。