大數(shù)據(jù)與Hadoop
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在了解一件自己完全沒(méi)有涉足過(guò)的事情之前,筆者喜歡使用“一縱兩橫”的思維去學(xué)習(xí)了解,這樣能夠快速的幫助自己構(gòu)建知識(shí)體系。學(xué)習(xí)一個(gè)新學(xué)科時(shí),可以看其一縱,其整個(gè)歷史至今的發(fā)展過(guò)程。然后看其兩橫,一橫是不同人對(duì)于其的評(píng)價(jià)即定義,還有一橫是不同學(xué)科或領(lǐng)域與其的聯(lián)系和區(qū)別。抓住這一縱兩橫的思維,可以幫助我們快速了解一個(gè)新的學(xué)科或者一個(gè)新的領(lǐng)域。
所謂的“一縱”,就是事物本身的歷史發(fā)展,從最開始的誕生到當(dāng)今的發(fā)展情況,可能有的人會(huì)覺(jué)得無(wú)聊或者沒(méi)有必要,但筆者想告訴讀者的是,這是進(jìn)入一個(gè)事物領(lǐng)域的最基本素質(zhì),能夠很好地體現(xiàn)著專業(yè)素養(yǎng)。而所謂的“兩橫”,就是一方面比較該領(lǐng)域里不同的專家學(xué)者或者提出者(創(chuàng)造者),以及其他領(lǐng)域的人對(duì)于該事物的闡述理解或者評(píng)價(jià)態(tài)度;另一方面就是比較已有領(lǐng)域?qū)W科或者相近領(lǐng)域?qū)W科和該事物的異同點(diǎn)或者聯(lián)系與區(qū)別。但完成了這“一縱兩橫”后,不僅是從本質(zhì)上了解事物,同時(shí)也和自己已有的知識(shí)架構(gòu)聯(lián)系在一起,有了自己的一些理解感悟。
大數(shù)據(jù)起源背景
筆者第一次正式接觸大數(shù)據(jù),是閱讀維克托的《大數(shù)據(jù)時(shí)代》,當(dāng)然是翻譯的中文版,是浙江人民出版社的,在《大數(shù)據(jù)時(shí)代》書中提到,大數(shù)據(jù)的發(fā)展來(lái)源,大數(shù)據(jù)的特征,著者維克托傳遞出大數(shù)據(jù)時(shí)代來(lái)臨了的信號(hào),同時(shí)我們數(shù)據(jù)的思考和應(yīng)用都應(yīng)該有巨大的思想變革,這樣才能適應(yīng)大數(shù)據(jù)時(shí)代的發(fā)展。
書中對(duì)大數(shù)據(jù)的三個(gè)核心思想:數(shù)據(jù)不是隨機(jī)樣本,而是全部數(shù)據(jù);數(shù)據(jù)不是精確性,而是混雜性;數(shù)據(jù)間不是因果關(guān)系,而是相關(guān)關(guān)系;
維克托圍繞著三個(gè)核心思想,闡述了我們思維、生活以及商業(yè)的變革,同時(shí)筆者有點(diǎn)小感悟,那就是我們的學(xué)習(xí)或者教育是不是也需要變革,針對(duì)這三個(gè)核心思想對(duì)我們學(xué)習(xí)或者教育進(jìn)行改革,當(dāng)然這不是我們重點(diǎn),這就當(dāng)做是筆者在拋磚引玉 。
既然大數(shù)據(jù)這個(gè)概念能夠催生,那么在實(shí)際的生活必然有著對(duì)應(yīng)的實(shí)際應(yīng)用。那么這又是這樣的情況了?這就聊到了 hadoop 框架的產(chǎn)生背景了,進(jìn)入 21 世紀(jì)以來(lái),隨著信息技術(shù)和信息社會(huì)的高速發(fā)展,信息或者數(shù)據(jù)在不斷地增長(zhǎng),而且是超幾何的瘋狂增長(zhǎng)。特別是在 Web2.0 時(shí)代,人們對(duì)于信息的產(chǎn)生和索取需求在瘋狂增長(zhǎng),這樣在瀏覽器端產(chǎn)生的數(shù)據(jù)在 TB 級(jí)別或者 PB 級(jí)別在增長(zhǎng),億萬(wàn)網(wǎng)民用戶的瀏覽數(shù)據(jù)記錄以及日夜增長(zhǎng)的網(wǎng)站,這些海量數(shù)據(jù)如何進(jìn)行存儲(chǔ)和分析計(jì)算,就成為擺在我們的面前,同時(shí)也是 Google 這樣的搜索引擎公司天然就需要面對(duì)的現(xiàn)實(shí)和需要解決的問(wèn)題。
Google-Alphabet 的新老三篇文章,被稱之為大數(shù)據(jù)領(lǐng)域的三駕馬車:
Google 老三架馬車: GFS、 MapReduce、 BigTable
Google 新三架馬車: Dremel、 Pregel、 Caffeine
大數(shù)據(jù)的應(yīng)用開發(fā)框架,你一定聽過(guò) Hadoop,對(duì)就是它!Hadoop 是 Apache(這樣說(shuō)應(yīng)該不準(zhǔn)確,就先這樣理解) 基于 Google 的前三篇文章實(shí)現(xiàn)的開源框架,現(xiàn)在是 Apache 下一個(gè)頂級(jí)項(xiàng)目。大家可以訪問(wèn)Apache的Hadoop官網(wǎng)看一看。
Hadoop 的起源背景之 GFS
大數(shù)據(jù)解決本質(zhì)問(wèn)題之一,就是對(duì)海量的數(shù)據(jù)如何進(jìn)行存儲(chǔ)。海量的數(shù)據(jù)并不是傳統(tǒng)的 MB 或者 GB 級(jí)數(shù)據(jù),而是 TB、 PB 級(jí)的數(shù)據(jù)概念?;蛟S你沒(méi)有啥直觀的感覺(jué),我們用信息數(shù)據(jù)的量級(jí)來(lái)進(jìn)行表明一下,你就會(huì)明白了。
簡(jiǎn)單來(lái)說(shuō), 1.2ZB 字節(jié)數(shù)據(jù),如果儲(chǔ)存在只讀光盤上,那么這些光盤可以堆成五堆,每一堆都可以伸到月球。公元前 3 世紀(jì),埃及的托勒密二世竭力收集了當(dāng)時(shí)所有的書寫作品,全部?jī)?chǔ)存在亞歷山大圖書館,代表著當(dāng)時(shí)世界上所有的知識(shí)量,但是在數(shù)字?jǐn)?shù)據(jù)洪流涌向世界后,每一個(gè)人都可以獲取大量的數(shù)據(jù)信心,相當(dāng)與當(dāng)時(shí)壓力山大圖書館儲(chǔ)存的數(shù)據(jù)總量的 320 倍。從上面的小故事就可以知道,現(xiàn)在數(shù)字信息的龐大,如此海量的數(shù)據(jù)需要儲(chǔ)存,傳統(tǒng)的磁盤陣列儲(chǔ)存已經(jīng)無(wú)法滿足這樣的需求了,畢竟磁盤陣列價(jià)格是昂貴的。這就需要低成本、高效率、高可靠的儲(chǔ)存設(shè)計(jì)。
2003 年, Google 發(fā)表了 文章,解決了這個(gè)問(wèn)題。在文章中闡述了解決海量數(shù)據(jù)儲(chǔ)存的設(shè)計(jì)思想。同時(shí)在 Apache 下Lucene 的子項(xiàng)目研究下,實(shí)現(xiàn)了海量數(shù)據(jù)的存儲(chǔ)設(shè)計(jì):分布式文件系統(tǒng),也就是 HDFS(Hadoop Distributed File System)。
Hadoop 的起源背景之 MapReduce大數(shù)據(jù)解決本質(zhì)問(wèn)題之二,就是海量數(shù)據(jù)如何進(jìn)行計(jì)算。在編程計(jì)算里,有并行編程計(jì)算框架,有過(guò)了解的人就知道,這并不是什么新興的技術(shù)。同樣 Google 在 2004 年發(fā)表了 文章,文章闡述了基于分布式儲(chǔ)存的海量數(shù)據(jù)并行計(jì)算解決方案思想。開源社區(qū) Apache 的 Hadoop 項(xiàng)目研究實(shí)現(xiàn)了MapReduce 并行計(jì)算框架,將計(jì)算與數(shù)據(jù)在本地進(jìn)行,將數(shù)據(jù)分為 Map 和Reduce 階段。簡(jiǎn)單闡述就是 MapReduce 編程模型:把一個(gè)大任務(wù)拆分成小任務(wù),再進(jìn)行匯總。
Hadoop 的起源背景之 BigTable
大數(shù)據(jù)解決本質(zhì)問(wèn)題之三,就是對(duì)于海量的數(shù)據(jù)進(jìn)行分析處理。數(shù)據(jù)在儲(chǔ)存后,其作用就是提供檢索和查閱,這才是搜索引擎的功效,也是Google 的強(qiáng)大技術(shù)支持。那么提高查詢和利用數(shù)據(jù)的效率就是需要解決的重點(diǎn)。到這里就需要有一定的數(shù)據(jù)庫(kù)相關(guān)知識(shí) (建議可以查閱一下關(guān)于數(shù)據(jù)庫(kù)的起源以及歷史發(fā)展),數(shù)據(jù)庫(kù)的產(chǎn)生就是為了查詢和利用數(shù)據(jù)的效率提高,然而現(xiàn)有的數(shù)據(jù)庫(kù)并不能滿足基于分布式儲(chǔ)存的需求。結(jié)構(gòu)化的數(shù)據(jù)庫(kù) (SQL) 和非結(jié)構(gòu)化的數(shù)據(jù) (NoSQL)。
Google 工程師在 2006 年發(fā)表了 文章,文中闡述了基于分布式儲(chǔ)存的數(shù)據(jù)庫(kù)設(shè)計(jì)思想。就這樣數(shù)據(jù)庫(kù)時(shí)代從關(guān)系型數(shù)據(jù)庫(kù)進(jìn)入了非關(guān)系型數(shù)據(jù)庫(kù)時(shí)代,一張大表 BigTable 設(shè)計(jì)思想, BigTable 就是把所有的數(shù)據(jù)保存到一張表中,同時(shí)采用冗余方式 (提高效率和可靠性,這種冗余的方式是最常用的手段,無(wú)論是在通信領(lǐng)域,或者自然語(yǔ)言處理領(lǐng)域、語(yǔ)音處理等等), 基于其設(shè)計(jì)思想就開源實(shí)現(xiàn)了基于 HDFS 的非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL 數(shù)據(jù)庫(kù)) HBase。
其實(shí)在我們常用的云盤或者網(wǎng)盤,其主要的設(shè)計(jì)思想就是這樣的,筆者常用的百度網(wǎng)盤也就類似于這樣分布式的儲(chǔ)存。筆者建議感興趣的讀者,可以閱讀 Google 的三篇文章,最好是原文 (雖然筆者的英文很爛),這樣我們就更能理解其設(shè)計(jì)思想的精髓。
搭建 Hadoop 環(huán)境準(zhǔn)備
安裝虛擬機(jī) VMWare、 Linux 操作系統(tǒng)。配置主機(jī)名和 I 靜態(tài) IP 地址、免密碼登錄設(shè)置。約定安裝目錄: /liwei/hadoop。配置好 JDK 的環(huán)境變量、準(zhǔn)備好 Hadoop 安裝包。了解 Hadoop 的目錄結(jié)構(gòu)以及對(duì)應(yīng)的作用。
在學(xué)習(xí)大數(shù)據(jù)之前,我們應(yīng)該知道對(duì)于 Hadoop 的環(huán)境搭建,有著三種方式:
本地模式,就是單機(jī)版的 Hadoop,筆者覺(jué)得完全沒(méi)有必要,因?yàn)?Hadoop的儲(chǔ)存原理本就是分布式的概念,同時(shí)不具備 HDFS,只能測(cè)試 MapReduce程序。全分布式集群,就是對(duì)每一個(gè)必須的節(jié)點(diǎn)都采用一個(gè)獨(dú)立的主機(jī),擁有獨(dú)立的 IP 地址,真正意義的分布式集群概念,完全達(dá)到 Hadoop 的實(shí)際應(yīng)用要求。偽分布式集群,我們學(xué)習(xí)最常用的一個(gè)環(huán)境搭建。就是采用一個(gè)主機(jī),但是配置多個(gè)擁有獨(dú)立的虛擬節(jié)點(diǎn),滿足 Hadoop 分布式的邏輯概念。具備 Hadoop 的所有功能,在單機(jī)上模擬一個(gè)分布式的環(huán)境。這也是我們?cè)趯W(xué)習(xí)中建議采用的方式,因?yàn)楣P者使用的是 Windows7 系統(tǒng),故而需要借助虛擬機(jī)。
Hadoop 分布式集群簡(jiǎn)介!引言:學(xué)習(xí)大數(shù)據(jù),就需要自己搭建 Hadoop 的運(yùn)行環(huán)境,這對(duì)于新手而言是一項(xiàng)困難的工作,特別是對(duì)于 Liunx 操作不熟悉的讀者而言,更是一大難題。但是學(xué)習(xí)部署自己的 Hadoop 環(huán)境是學(xué)習(xí)大數(shù)據(jù)的必經(jīng)之路,也是必會(huì)技能之一。接下來(lái)跟筆者一起來(lái)搭建 Hadoop 集群環(huán)境吧!當(dāng)然在 Windows 下也是支持部署 hadoop 的,不過(guò)這并不適合實(shí)際生產(chǎn)的需求,同時(shí) Windows 不如 Liunx 性能穩(wěn)定等等因素,一次是來(lái)自 Apache 官網(wǎng)對(duì)于開發(fā)平臺(tái)的簡(jiǎn)介。
GNU/Linux is supported as a development and production platform. Hadoop has been demonstrated on GNU/Linux clusters with 2000 nodes.Windows is also a supported platform but the followings steps are for Linux only. To set up Hadoop on Windows, see wiki page.
支持 GNU / Linux 作為開發(fā)和生產(chǎn)平臺(tái)。已經(jīng)在具有 2000 個(gè)節(jié)點(diǎn)的GNU / Linux 集群上演示了 Hadoop。 Windows 也是受支持的平臺(tái),但以下步驟僅適用于 Linux。要在 Windows 上設(shè)置 Hadoop,請(qǐng)參閱 Wiki 頁(yè)面。