1. 程式人生 > >大資料的概念和來源

大資料的概念和來源

1.起源

  1. 起源 2008年9月,美國《自然》雜誌,正是提出“大資料”概念

  2. 2011年2月1日,美國《科學》雜誌,通過社會調查的方式,第一次分析了大資料對人們生活的影響

  3. 2011年5月,麥肯錫研究院分佈報告。大資料是指其大小超出了常規資料庫工具獲取,儲存,管理和分析能力的資料集。

  1. 特徵

 4V特徵(value,volume,velocity,variety)

Value:價值高。

Volume:體量大。(資料每個18月翻一番,而每年產生的資料量增長到44萬億GB)

Velocity:速度快。(資料生成,儲存,分析,處理遠遠超過人們的想象力)

Variety:種類多。

  1. 意義

  1. 大資料的來源

  1. 按產生主體

(1)企業(關係型資料庫,資料倉庫)

(2)人(瀏覽資訊,聊天,電子商務......)

(3)機器(伺服器產生日誌,視訊監控資料)

  1. 資料來源的行業劃分

(1)BAT三大公司為代表

(2)電信、金融、保險、電力、石化系統

(3)公共安全、醫療、交通領域

(4)氣象、地理、政務等領域

(5)製造業和其他產業

3.按資料儲存的形式劃分

(1)結構化

(2)非結構化

二.大資料技術支撐

  1. 大資料運用場景

環境,教育,醫療,農業,智慧城市,零售業,金融業。

  1. 大資料的處理方法

  1. 資料採集

資料抓取,資料匯入,物聯網裝置自動抓取

  1. 資料預處理

資料清理,資料整合,資料轉換,資料規約。

轉換:過平滑聚集、資料概化、規範化等方式將資料轉換成適用於資料探勘的形式。

規約:尋找依賴於發現目標的資料的有用特徵,縮減資料規模,最大限度地精簡資料量。

  1. 統計與分析

統計與分析主要是利用分散式資料庫,或分散式計算叢集來對儲存於其內的海量資料進行普通的分析和分類彙總,以滿足大多數常見的分析需求,在這些方面需要使用不同的框架和方法。

Hadoop:大資料的核心,主要組成部分包括:mapreduce(處理)和HDFS(儲存)和yarn(叢集資源管理和排程);

Hbase:常用資料庫;spark:實時資料處理框架;sqoop:資料匯入匯出;flume:日誌採集工具

Hive:資料倉庫,必須有SQL基礎,可以做離線的資料分析,把複雜的mapreduce程式碼轉化為簡單的sql語句,

而且可以處理的資料型別更加豐富,對接的工具也更多,是整個大資料學習中非常主要的一部分。

Scala語言主要用來開發spark程式碼,呼叫spark的相關API方法,還有spark SQL和spark streaming的開發,主要對接Kafka進行資料的消費,然後進行流資料處理。結果可以儲存在本地資料庫,也可以儲存在大資料平臺下。

在大資料的統計與分析過程中,主要面對的挑戰是分析涉及的資料量太大,其對系統資源,特別是I/O會有極大的佔用。

  1. 資料探勘

  1. Hadoop和大資料的淵源

  1. 什麼是hadoop?

  1. Hadoop 是 Apache 旗下的一套開源軟體平臺。

  2. Hadoop 可以利用計算機叢集,根據使用者自定義的業務邏輯對海量資料進行分散式處理。

  3. 通常我們說的 Hadoop 是指一個更廣泛的概念--Hadoop 生態圈。

  1. hadoop生態圈

3.技術介紹

(1)Ambari:Apache Ambari是一種基於Web的工具,支援Apache Hadoop叢集的供應、管理和監控。

   Ambari已支援大多數Hadoop元件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper,Sqoop,Hcatalog。

(2)Hdfs:Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。

   HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。

 HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。大資料技術首要的要求就是先把資料存下來。HDFS(Hadoop Distributed FileSystem)的設計本質就是為了大量的資料能夠橫跨成千上萬臺機器儲存,但是對於使用者來說看到的是一個檔案系統而不是許多檔案系統。比如說你要獲取 /hdfs/tmp/aaa 的資料,雖然使用的是一個路徑,但找個檔案的資料可能存放在很多臺不同的機器上。作為使用者來說不需要知道資料到底儲存在哪兒,就像你在單機上並不關心檔案到底儲存在磁碟那個扇區一樣。這些資料交由 HDFS 來儲存。

---------------------

ii容錯率是指在某個體系中能減小一些因素或選擇對某個系統產生不穩定的概率。POSIX表示可移植作業系統介面(Portable Operating System Interface of UNIX,縮寫為 POSIX )

Yarn:Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,它的引入為叢集在利用率、資源統一管理和資料共享等方面帶來了巨大好處。

MapReduce:分散式離線計算

Hive:在使用了一段時間的 MapReduce 以後,程式設計師發現 MapReduce 的程式寫起來太麻煩。希望能夠封裝出一種更簡單的方式去完成 MapReduce 程式,於是就有了 Pig 和 Hive。

Pig 是以類似指令碼的方式去描述 MapReduce,而 Hive 則是以 SQL 的方式。它們會自動把指令碼或者 SQL 翻譯成 MapReduce 程式,然後丟給計算引擎去計算處理。有了 Hive 以後人們發現 SQL 的優勢太大了。一是容易寫,一兩行的 SQL 換成 MapReduce 可能要幾十上百行。二是容易上手,即使非計算機背景的使用者也可以很快的學會。三是易寫易改,一看就懂,容易維護。所以自從 Hive 問世很快就成長為大資料倉庫的核心技術。使用了一段時間的 Hive 後人們發現 Hive 執行在 MapReduce 上太慢了。於是有開發出了針對於 SQL 優化的技術 Impala,Drill 和 Presto 等。這些技術 犧牲了系統的通用性和穩定性來提高 SQL 的效率,最終並沒有流行起來。

Sqoop:Sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的資料庫(mysql、postgresql...)間進行資料的傳遞,可以將一個關係型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫。

Storm:如果想要更快的計算速度,比如視訊網站的熱博榜,要求更新延遲在一分鐘內,上面的任何一種手段都無法勝任。於是 Streaming(流)計算模型被開發出來了。Storm 是最流行的流計算平臺。流處理的思路就是在資料進入系統的時候就進行處理,基本無延遲。缺點是不靈活,必須事先直到需要統計的資料,資料流過就沒有了,沒法進行補算。因此它是個好東西,但還是無法代替上述體系的。

HBase: 是一個構建與 HDFS 的分散式,面向列的儲存系統。以 kv 對的方式儲存資料並對存取操作做了優化,能夠飛快的根據 key 獲取繫結的資料。例如從幾個 P 的資料中找身份證號只需要零點幾秒。

除此之外還有需要定製的元件。比如:Mahout 是機器學習和推薦引擎,Nutch 是搜尋引擎,Zookeeper 是叢集管理工具,Sqoop 是 Hadoop 和資料庫之間的匯入匯出工具,Flume 是日誌提取  Oozie 作業排程。

  1. Hadoop的發展

Google FileSystem:怎麼使用普通計算機儲存海量的資料;

Google MapReduce:怎麼快速的計算海量的資料;

Google BigTable:怎麼實現海量資料的快速查詢;

________________________

i容錯率是指在某個體系中能減小一些因素或選擇對某個系統產生不穩定的概率。POSIX表示可移植作業系統介面(Portable Operating System Interface of UNIX,縮寫為 POSIX )