第一次接觸這個時候在網上查了不少講解,如下不少只是來自網絡。
1.Hadoop
(1)Hadoop簡介
Hadoop是一個分佈式系統基礎架構,由Apache基金會開發。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力高速運算和存儲。Hadoop實現了一個分佈式文件系統,簡稱HDFS。HDFS有着高容錯性的特色,而且設計用來部署在低廉的硬件上。並且它提供高傳輸率來訪問應用程序的數據,適合那些有着超大數據集的應用程序。
Hadoop 有許多元素構成。其最底部是HDFS,它存儲 Hadoop 集羣中全部存儲節點上的文件。HDFS的上一層是 MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。
(3) 分佈式計算模型
一個hadoop集羣每每有幾十臺甚至成百上千臺low cost的計算機組成,咱們運行的每個任務都要在這些計算機上作任務的分發,執行中間數據排序以及最後的彙總,期間還包含節點發現,任務的重試,故障節點替換等等等等的維護以及異常狀況處理。
因此說hadoop就是一個計算模型。一個分佈式的計算模型。
2. Mapreduce
(1) map reduce 和hadoop起源
MapReduce借用了函數式編程的概念,是Google發明的一種數據處理模型。由於Google幾乎爬了互聯網上的全部網頁,要爲處理這些網頁併爲搜索引擎創建索引是一項很是艱鉅的任務,必須藉助成千上萬臺機器同時工做(也就是分佈式並行處理),纔有可能完成創建索引的任務。
因此,Google發明了MapReduce數據處理模型,並且他們還就此發表了相關論文。
後來,Doug Cutting老大就根據這篇論文硬生生的複製了一個MapReduce出來,也就是今天的Hadoop。
1.k-means算法思想:
K-means算法是硬聚類算法,是典型的局域原型的目標函數聚類方法的表明,它是數據點到原型的某種距離做爲優化的目標函數,利用函數求極值的方法獲得 迭代運算的調整規則。K-means算法以歐式距離做爲類似度測度,它是求對應某一初始聚類中心向量V最有分類,使得評價指標J最小。算法採用偏差平方和 準則函數做爲聚類準則函數。
歐幾里得距離公式
k個初始類聚類中心點的選取對聚類結果具備較大的影響 ,由於在該
算法第 一步中是隨機的選取任意k個對象做爲初始聚類的中心,初始地表明一個簇。該算法在每次迭代中對數據集中剩餘的每一個對象,根據其與各個簇中心的距離將每一個對 象從新賦給最近的簇。當考察完全部數據對象後,一次迭代運算完成,新的聚類中心被計算出來。若是在一次迭代先後,J的值沒有發生變化,說明算法已經收斂。
算法過程以下:
1)從N個文檔隨機選取K個文檔做爲質心
2)對剩餘的每一個文檔測量其到每一個質心的距離,並把它歸到最近的質心的類
3)從新計算已經獲得的各個類的質心
4)迭代2~3步直至新的質心與原質心相等或小於指定閾值,算法結束