我對大資料相關技術的學習心得及理解

來源:互聯網
上載者:User

標籤:


本篇為這一段時間以來我對大資料相關技術的學習心得及理解,主要涉及以下幾個方面: noSql, 叢集, 資料採礦, 機器學習,雲端運算,大資料,以及Hadoop和Spark。
主要都是一些初級的概念澄清之類的東西,並且比較淩亂,慎入。
* 1. NoSQL
我的理解是,NoSQL主要用於儲存一些非結構化資料, 是關聯式資料庫與檔案儲存體方式(比如視頻檔案就適合使用檔案的方式儲存)的過度。

** 1.1 NoSQL的分類:
列儲存: Hbase(BigTable的開源實現),可儲存結構化資料。 Cassandra
文檔儲存: MongoDB CouchDB Domino
索引值對儲存: MemcacheDB Rddis BerkeleyDB(BDB,oracle)
圖儲存: Neo4j

Object Storage Service:
xml資料庫:

上述種類中,前四類經常被提及。

 

 

** 1.2 常見NoSQL
*** 列儲存 分散式資料庫 Hbase
Hbase是Hadoop中的資料庫,是google BigTable的開源實現。
*** 索引值對儲存 MemcacheDB

**** wiki上的介紹:
MemcacheDB is a distributed key-value storage system designed for persistent. It is NOT a cache solution, but a persistent storage engine for fast and
reliable key-value based object storage and retrieval. It conforms to memcache protocol(not completed, see below), so any memcached client
can have connectivity with it. MemcacheDB uses Berkeley DB as a storing backend, so lots of features including transaction and replication are supported.

**** 與memcache memcached 的區別
memcached: 主要用在MySQL+Memcached的架構(Mem-cache-d)中. memcache 應該是與memcached類似的概念。

MemcacheDB的前端緩衝是Memcached。 memcachedb可以將memcached 緩衝的東西持久化到berkeley DB中。 memCachedb是sina的產品。


*** NoSQL資料庫的分布式模型:

分區模型: 資料按照字母序分區。

為了防止資料丟失及保持系統在某些節點失效時的可用性,資料會被複製並儲存到不同的節點。這些節點之間可能具有主從、對等關係。
主從模型中的主節點主要負責資料的更新,並把更新後的資料複製到從節點。從節點主要相應資料的讀取。
對等模型中節點的地位相同,都可以響應對資料的更新和讀取。

除此之外,還可以把分區模型與主從模型/對等模型綜合起來使用。在分區和主從複製中的一拖一方案中,分區的作用在於資料的分布式儲存;主從複製的作用在於為各個分區結點提供備份,
增加資料安全;


* 2. distributed system & cluster
** 分布式系統與叢集的區別
叢集中的節點常物理上比較近;分布式系統的節點可以遍布互連網。 但在Hadoop等架構中,這兩個概念的區分正在變得模糊。

** 叢集
叢集的最大瓶頸,以及如何解決該瓶頸?
磁碟IO。

** 分布式系統
*** 分布式作業系統: 貌似都不知名。跟分布式系統貌似不是一個概念? 我的理解是分布式作業系統是分布式系統的一個子概念。

*** Distributed File System
又名分散式資料庫,比如Hbase等。

 


* 3. 資料採礦

** 概念

資料採礦是應用到資料集(也包括大資料)之上的一種技術,

資料採礦是資料庫知識發現(KDD)中的一個步驟,是海量有用資料快速增長的產物。所謂資料採礦是指從資料庫的大量資料中揭示出隱含的、先前未知的並有潛在價值的資訊的過程。

資料採礦是KDD(知識發現,Knowledge Discovery in database)過程中的分析步驟。發現的模式可能有: 資料記錄的分組(group of) , 不常見記錄,記錄見的依賴,等。

資料採礦的總體目標是在資料集中抽取資訊,並轉換到可理解的結構。資訊必須是以前未知的。

資料採礦的前沿:基於Hadoop的大資料採礦

*** 與資料分析的關係
資料處理?資料分析是一回事, 包括資料採礦就是資料分析的一大類方法。都是要從資料裡面找到你想要的資訊,分析資料特徵,對資料進行某些處理,然後看其顯示的一些問題。
*** 與資料庫的關係
資料結構→資料庫→資料倉儲→資料採礦→Web資料採礦

 

** 資料採礦與機器學習\統計等其他概念的關係

資料採礦與機器學習概念非常類似.

在大資料集中發現模式(和知識) 會使用人工智慧、機器學習和資料庫系統這些領域的交叉部分。

絕大多數資料採礦技術都來自機器學習領域,但機器學習研究往往並不把海量資料作為處理對象。因此,資料採礦要對機器學習演算法進行改造,使得演算法效能和空間佔用達到實用的地步。

對資料採礦而言,資料庫提供資料管理技術,機器學習和統計學提供資料分析技術。 統計學往往醉心於理論的優美而忽視實際的效用,因此,統計學界提供的很多技術通常都要在機器學習界進一步
研究,變成有效機器學習演算法之後才能再進入資料採礦領域。因此 統計學主要是通過機器學習來對資料採礦發揮影響,而機器學習和資料庫則是資料採礦的兩大支撐技術。

 

 

** 前處理
在使用資料採礦演算法前,要設定目標資料。常使用資料倉儲。目的地組合將被清洗,資料清洗去除包含遺失資料的資料,以及包含噪音的觀察結果。

 

** 資料採礦常包含六類常見任務

:聚類 分類(郵件和垃圾郵件)

群集(cluster analysis ), 可以被形式化為多目標最佳化問題。
資料採礦和機器學習往往使用相同的演算法,但是往往具有不同的目標。


** 關聯推薦和相關內容推薦,
關聯推薦就是我們常說的購物籃分析,即使用購買了某商品的使用者同時購買了什麼這個規則來發現商品間的潛在聯絡。關聯推薦是基於使用者行為分析的推薦,而相關內容推薦是基於內容固有特徵的
推薦,只與內容本身有關,與使用者的行為完全無關,所以相關內容推薦的模型是一種“冷啟動”的演算法,不需要任何曆史瀏覽訪問資料的支援。


關聯推薦在實現方式上可以分為兩種:
以產品分析為基礎的關聯推薦和以使用者分析為基礎的關聯推薦。
產品分析的關聯推薦指的是通過分析產品的特徵發現他們之間的共同點。

而基於使用者分析的推薦是通過分析使用者的曆史行為資料,可能會發現購買了xx的很多使用者也買了xxx,那麼就可以基於這個發現進行推薦,這種方法就是資料採礦中的關聯規則挖掘,其中最經典的
案例就是沃爾瑪的啤酒與尿布的故事。
( 搭售方案)

基於使用者行為分析的關聯推薦:

關聯規則的實現原理是從所有的使用者購物資料中(如果資料量過大,可以選取一定的時間區間,如一年、一個季度等),尋找當使用者購買了A商品的基礎上,又購買了B商品的人數所佔的比例,
當這個比例達到了預設的一個目標水平的時候,我們就認為這兩個商品是存在一定關聯的,所以當使用者購買了A商品但還未購買B商品時,我們就可以向該類使用者推薦B商品。

關聯規則挖掘一般採用基於頻繁集的Apriori演算法。


** 常見演算法
KNN演算法及其應用
KNN( K-Nearest Neighbor
algorithm),K最近鄰演算法,通過計算樣本個體間的距離或者相似性尋找與每個樣本個體最相近的K個個體,KNN一般被用於分類演算法沒在給定分類規則的訓練集的基礎上對總體的樣本進行分類。
演算法的原理如下:
基於內容間相似性的計算結果,套用KNN的原理實現相關內容推薦,只要根據每個內容與之比較的所有內容的相似性分值降序排列,並取前K個內容作為該內容的最相關內容推薦給使用者就可以了。
距離和相似性度量是KNN的基礎演算法,因為KNN的個體相似性或鄰近的距離都會選擇距離度量和相似性度量中的某種方法進行計算。

** 距離和相似性度量:

在資料分析和資料採礦中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。最常見的是資料分析中的相關分析,資料採礦中的分類和聚類演算法,如KNN和K均值。

可以用哪些方法來衡量兩個個體間的差異,主要分為距離度量和相似性度量。
距離度量: 用於度量個體在空間上存在的距離,距離越遠說明個體間的差異越大。距離度量可以分為: 歐幾裡得距離(度量多維空間中各個點之間的絕對距離);馬氏距離,等。

相似性度量:
即計算個體間的相似性,與距離度量相反,相似性度量的值越小,說明個體間差異越大。

餘弦相似性。

 

** s曲線
s型曲線是最典型的一類成長曲線,也許你的網站的使用者訪問量或者銷售額正是以類似這種趨勢增長的。發現這種規律後,就可以用資料統計的方法對其進行分析,對於這類有規律的線性曲線,
最常用的方法就是迴歸分析?:


* 4. 機器學習

機器學習一詞出現較晚,它是以解決預測問題為目的,一系列建模\最佳化\設計演算法的過程。

**  從買芒果的例子看懂機器學習:

來自36Kr: 從買芒果到機器學習:  建立芒果甜不甜的規則:
if (color is bright yellow and size is big and sold by favorite vendor): mango is sweet.
if (soft): mango is juicy.
etc.

這些規則是人制定的,然後交給電腦程式,去自動檢測。然則這些規則能夠由機器給出呢?

機器學習演算法(classification、regression)是普通演算法的改進版,它們讓你的程式變得更“聰明”,能從你提供的資料裡自動學到東西。

相關性模型,根據芒果的物理特徵:顏色\大小\形狀\產地等,可以預測哪些芒果是甜的\熟的\多汁的。


** 機器學習與其他概念的關係
*** 機器學習與人工智慧的關係?

人工智慧最大,機器學習是人工智慧裡最近比較流行的一個分支。

機器學習通常會用統計分析的方法進行分析,統計學在機器學習裡佔有非常重要的地位。
神經網路是機器學習裡一個研究非常廣泛的方法,或者說是一種建模方法。

模式識別和資料採礦使用機器學習的模型解決,當然也用統計分析的模型。

*** 機器學習與統計的關係
統計的方法可以用來機器學習,比如:聚類\貝葉斯,等等。 當然機器學習還有很多其他的方法。

機器學習是演算法的研究,致力於研究能夠根據經驗自動提高的演算法。神經網路是一種模型,數學模型。可用於模式識別和機器學習。

在統計和資料學家看來,機器學習就是電腦學家做統計. 統計分析: 線性迴歸


*** 機器學習與模式識別

模式識別更偏向於應用,比如是針對具體的人臉\文字\語音等進行針對性的研究,而機器學習更偏重的是方法,不是針對某個具體問題而是對於整個流程或者流程中的某一部分做通用的演算法研究

機器學習強調學習能力,機器在演算法的指導下有學習的能力,比如神經網路(非線性迴歸),神經網路是學習演算法中的一個很火的模型

 

 

 


***  資料採礦和機器學習的區分是: 
資料採礦問題一般都有巨大資料,尤其指計算效率比統計精度更重要的問題,通常站在商業的角度;機器學習則更偏向於人工智慧的方向。
資料採礦: 啤酒尿布要放一塊。 
李嘉誠有100多億美元,全國平均人均可支配收入是13279人民幣:則可以挖掘出: 李嘉誠很有錢。


機器學習是一種方法,通常用來進行模式識別。

 

 

 * 5. cloud computing

雲端運算可以分為三個層次: IaaS, Paas和Saas。下面以ibm的smartCloud為例進行分析。

** --------------------------ibm smartCloud---------------

雲端運算、大資料分析、移動、社交、安全(CAMSS)為代表的新興業務
the smartCloud is composde by three parts:

*** IaaS

OpenStack 開放雲作業系統 (分布式系統?) 私人雲端也可以由雲端廠商提供?


*** PaaS

BlueMix 使得組織和開發人員能夠快速而又輕鬆地在雲上建立、部署和管理應用程式(web,移動,大資料,新型智慧型裝置等)。
而Bluemix將開發人員和創業者作為了重點開拓對象,這在IBM雲端運算曆史上是很少見的,這是IBM的轉型中的一個重大轉變。

“在國外Bluemix是搭載在SoftLayer上,在國內將搭載在OpenStack上”,胡世忠解釋說,這意味著在國內支援OpenStack的平台上Bluemix都可以落地。

*** Saas

 

compose, a company that offers mongoDB, Redis, and other database as a service
(DBaaS). --- the copyright issue??

 

high availability (HA), failover,
capability vs avaliablity

 


* 6. 大資料:

大資料指為了在大資料集中發現巨大潛在價值的技術.
大資料是指資料量大,不是一般的大,海量. 資料集太大或者太複雜,以至於傳統的資料處理(data processing)不再適用。常用於指一些用於發掘資料中潛在價值的預測性分析。
關係型資料庫管理系統和案頭統計工具、可視化包在處理大資料方面往往存在問題。需要大量的運行在數以千計的伺服器上的並行軟體 需要新的處理方式才能支援決策制定 價值發現和過程最佳化

 

2001年首次提出大資料概念, 2012年 gartner把大資料定義為: high volume(amount of data) high velocity(speed of data in and out)
(and/or high variety( range of data tyeps and sources )

 

大資料 代表了資訊集合(具有3v特徵、需要特定技術和分析方法才能把它轉換為價值)

** 曆史
當初,HPCC和Quantcast File System 是僅有的可以處理exabytes資料的公用可用平台(分布式檔案分享權限設定架構( 用於資料存放區和查詢) ) google基於HPCC推出了MapReduce架構:
MapReduce架構提供了一種處理海量資料的平行處理模型,以及配套的實現。在MapReduce架構中,查詢被分割並分部到不同的並行節點,並且並行地執行(Map),
查詢結果被收集並分發(Reduce)。Hadoop是MapReduce架構的一種開源實現。(hadoop mapReduce. google的mapReduce在BigMap上進行,hadoop mapReduce在Hbase上進行)

** 與HPC 雲端運算的關係
大資料 是 BigData的翻譯, 其實就是 對海量資料的資料採礦,資料分析。 對於以前的科研學術界,都是使用HPC技術,現在工業界傾向於使用“雲端運算”。


** 具體問題一例
5 用你最熟悉的大資料採礦工具,簡述大資料採礦的主要過程

 

 

* 7. Hodoop

在安裝hadoop時,需要在多個節點上,重複部署hadoop的步驟 。


** hadoop之上的查詢分析工具
*** hive
Hive是一種基於hadoop的資料倉儲工具,它提供了一種查詢hadoop資料庫的方式。hive的查詢語言hql跟sql查詢非常類似。

**** Hive問題
a.txt b.txt 100萬行(ip,username) 比如 127.0.0.1 zhangsan
解決一下問題: 兩個文本中ip地址個數(去重);a.txt中各個user的ip數。
簡述關鍵過程,並寫出關鍵代碼

CREATE TABLE a FROM a.txt
CREATE TABLE b FROM b.txt

SELECT DISTINCT ip FORM a


*** pig
pig學習曲線陡峭,與傳統sql查詢不太一樣。pig也是與hive類似的查詢工具。

*** Impala(黑斑羚)
cloudera公司,與Hive類似。


*** Mahout(機器學習、資料採礦的庫)

 

** HDFS
*** HDFS 架構,以及HDFS的讀寫過程

one NameNode and multiple dataNode

** YARN
用來取代舊版本hadoop中的MapReduce。
*** 架構arch

 

RM(ResourceManager) AM(ApplicationManager) NM(NodeManager)

通常RM節點只有一個,NM節點有多個。


* 8. Spark
** Spark和MapReduce的區別
Spark從層次上來說,跟hodoop更為類似,都是一種大資料平台或架構。
MapReduce是hadoop架構中的一部分,是一種計算架構。

MapReduce是Hodoop的計算模型。而Spark中的計算模型是DAG(有向非循環圖圖)

Hadoop更適合做批處理,而Spark更適合需要反覆迭代型的機器學習

Spark既可以在記憶體中運行,也可以在硬碟上運行。

Spark比Hadoop快很多,官方宣稱快100倍(如果都是運行在磁碟上,則快10倍)

 

Spark提供 :Spark SQL MLlib


Hadoop and Spark are both Big Data frameworks
–they provide some of the most popular tools used to carry out common Big Data-related tasks.

hey are not mutually exclusive, as they are able to work together.

spark does not provide its own distributed storage system. For this reason
many Big Data projects involve installing Spark on top of Hadoop, where Spark’s advanced
analytics applications can make use of data stored using the Hadoop Distributed File System (HDFS).

 

我對大資料相關技術的學習心得及理解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.