大數據學習記錄(day1)--雲計算

前言:博客好久沒有更新,也好久沒有學習新東西了,從今天開始學習大數據,只要開始,就不算晚。文章內容基本是在網絡資料的基礎上做些整理(會註明學習來源)。

開始今天的學習。

學習來源:http://www.aboutyun.com/thread-6179-1-1.html

                  http://blog.csdn.net/yuexianchang/article/details/52468291

                  http://www.cnblogs.com/xing901022/p/6195422.html

說明:由於參考資料大多是2013年以前的,所以有些說法也許並不成立,請讀者選擇性吸收。


       雲計算,是一種基於互聯網的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需求提供給計算機和其他設備,主要是基於互聯網的相關服務地增加、使用和交付模式,通常涉及通過互聯網來提供動態易擴展且經常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。狹義雲計算指IT基礎設施的交付和使用模式,指通過網絡以按需、易擴展的方式獲得所需資源;廣義雲計算指服務地交付和使用模式,指通過網絡以按需、易擴展的方式獲得所需服務。這種服務可以是IT和軟件、互聯網相關,也可是其他服務。它意味着計算也可作爲一種商品通過互聯網進行流通。
       1. 什麼是雲計算?(來源:http://www.aboutyun.com/thread-5765-1-1.html)
       1.1 簡介
       事實上,目前並沒有一個確定的定義。然而概括來講,所謂的雲計算,指的就是把你的軟件和服務統一部署在數據中心,統一管理,從而實現高伸縮性。
      雲計算擁有以下特點:
      ·虛擬化和自動化
      ·服務器,存儲介質,網絡等資源都可以隨時替換
      ·所有的資源都由雲端統一管理
      ·高度的伸縮性以滿足業務需求
      ·集中於將服務傳遞給業務

      1.2 雲計算的部署方式
      ·私有云:數據中心部署在企業內部,由企業自行管理。微軟爲大家提供了Dynamic Data Center Toolkit,來方便大家管理自己的數據中心。
     ·公共雲:數據中心由第三方的雲計算供應商提供,供應商幫助企業管理基礎設施(例如硬件,網絡,等等)。企業將自己的軟件及服務部屬在供應商提供的數據中心,並且支付一定的租金。Windows Azure正是這樣一個公共雲平臺。
     1.3 雲計算的運營方式
      ·軟件即服務(SaaS):雲計算運營商直接以服務的形式供應軟件,供最終用戶使用。有些服務還提供了SDK,從而使得第三方開發人員可以進行二次開發。在這種運營模式下,開發人員通常只能針對現有的產品開發插件,而無法充分挖掘平臺和操作系統的特點,不過他們可以在現有產品的基礎上添加新的功能,而不必從頭開始實現。微軟的Bing,Windows Live,Microsoft Business Productivity Online等產品就屬於這一類型。
     ·平臺即服務(PaaS):雲計算運營商將自己的開發及部署平臺提供給第三方開發人員,第三方開發人員在這個平臺上開發自己的軟件和服務,供自己或其它用戶使用。在這種運營模式下,開發人員有了更多的自由,可以發揮出平臺的強大功能,而不受現有產品的束縛。Windows Azure正是這樣一個產品。
     ·基礎設施即服務(IaaS):雲計算運營商提供但不管理基礎設施,第三方開發人員將開發好的軟件和服務交給自己公司的IT管理員,由IT管理員負責部署及管理。在這種運營模式下,開發人員和IT管理員有最大限度的自由,然而由於必須自行管理部分基礎設施,因此成本通常也會較大,對管理員的要求也會較高。

      1.4 總結
       雲計算指的就是把你的軟件和服務統一部署在數據中心,統一管理,從而實現高伸縮性。從部署方式來說,雲計算可以分爲私有云和公共雲。從運營方式來說,雲計算可以分成SaaS,PaaS,IaaS三類。

       2.什麼是雲計算技術?(來源:http://www.aboutyun.com/thread-5767-1-1.html

       2.1 首先讓大家明白什麼是雲端。
       所謂雲端需要兩層理解:
      (1)服務不在本地,這一層可以理解爲服務器。
      (2)它和普通的服務器是不一樣的,這些雲端的服務器的資源是共享的,一旦一個服務器不能承受,將會把任務分配給其他機器。
       2.2 雲技術與其他技術的區別:
       雲技術可以使用的語言有java,c++等。雲技術的開發,並沒有發展什麼新語言,而是在其他語言的基礎上。比如Java語言。與其他技術,最顯著的區別,不是在開發上,而是在於架構上,最顯著的特點是分佈式。
       2.3 主要雲技術

       (1)Hadoop
       Hadoop是一個框架,它是由Java語言來實現的。Hadoop是處理大數據技術.Hadoop可以處理雲計算產生大數據,需要區分hadoop並不是雲計算。它和雲計算密不可分。
       Hadoop產生是互聯網的產物,也是必然。大家都知道,我們上網時需要服務器的。假如世界上只有一臺電腦,根本不需要服務器。如果有10臺服務器,100臺,1000臺,上萬臺,那麼我們該如何讓大家相互通信,共享知識,所以就有了互聯網。
       互聯網產生,全世界都可以通信,知識如此居多,我們像獲取更多的知識,想獲取新技術,獲取新知識,通過什麼,國內通過百度,國外也有許多,比如Google。可是百度和谷歌的用戶有多少,多了不說,最起碼有上億的用戶。並且這些用戶每天上百度,上谷歌,又會產生多少數據,查詢多少數據。那麼他們怎麼承受如此多用戶。這不是一臺電腦、一臺服務器能完成的事情。
       Hadoop就是一個解決方案。Hadoop是一個分佈式方案,能夠把壓力分攤到其他服務器。

       hadoop擅長日誌分析,facebook就用Hive來進行日誌分析,2009年時facebook就有非編程人員的30%的人使用HiveQL進行數據分析;淘寶搜索中的自定義篩選也使用的Hive;利用Pig還可以做高級的數據處理,包括Twitter、LinkedIn 上用於發現您可能認識的人,可以實現類似Amazon.com的協同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop作業是用pig運行的,包括垃圾郵件的識別和過濾,還有用戶特徵建模。(2012年8月25新更新,天貓的推薦系統是hive,少量嘗試mahout!)
      下面舉例說明:
       設想一下這樣的應用場景. 我有一個100M 的數據庫備份的sql 文件.我現在想在不導入到數據庫的情況下直接用grep操作通過正則過濾出我想要的內容。例如:某個表中 含有相同關鍵字的記錄那麼有幾種方式,一種是直接用linux的命令 grep 還有一種就是通過編程來讀取文件,然後對每行數據進行正則匹配得到結果好了 現在是100M 的數據庫備份.上述兩種方法都可以輕鬆應對.
       那麼如果是1G , 1T 甚至 1PB 的數據呢 ,上面2種方法還能行得通嗎? 答案是不能.畢竟單臺服務器的性能總有其上限.那麼對於這種 超大數據文件怎麼得到我們想要的結果呢?
       有種方法 就是分佈式計算, 分佈式計算的核心就在於 利用分佈式算法 把運行在單臺機器上的程序擴展到多臺機器上並行運行.從而使數據處理能力成倍增加.但是這種分佈式計算一般對編程人員要求很高,而且對服務器也有要求.導致了成本變得非常高.
       Haddop 就是爲了解決這個問題誕生的.Haddop 可以很輕易的把 很多linux的廉價pc 組成 分佈式結點,然後編程人員也不需要知道分佈式算法之類,只需要根據mapreduce的規則定義好接口方法,剩下的就交給Haddop. 它會自動把相關的計算分佈到各個結點上去,然後得出結果.
       例如上述的例子 : Hadoop 要做的事 首先把 1PB的數據文件導入到 HDFS中, 然後編程人員定義好 map和reduce, 也就是把文件的行定義爲key,每行的內容定義爲value , 然後進行正則匹配,匹配成功則把結果 通過reduce聚合起來返回.Hadoop 就會把這個程序分佈到N 個結點去並行的操作.
       那麼原本可能需要計算好幾天,在有了足夠多的結點之後就可以把時間縮小到幾小時之內.
       這也就是所謂的 大數據 雲計算了.如果還是不懂的話再舉個簡單的例子
       比如 1億個 1 相加 得出計算結果, 我們很輕易知道結果是 1億.但是計算機不知道.那麼單臺計算機處理的方式做一個一億次的循環每次結果+1
       那麼分佈式的處理方式則變成 我用 1萬臺 計算機,每個計算機只需要計算 1萬個 1 相加 然後再有一臺計算機把 1萬臺計算機得到的結果再相加
       從而得到最後的結果.
       理論上講, 計算速度就提高了 1萬倍. 當然上面可能是一個不恰當的例子.但所謂分佈式,大數據,雲計算 大抵也就是這麼回事了.

       (2)openstack
       openstack是搭建雲平臺技術,可以搭建公有云,私有云,和混合雲。
       OpenStack是開源的雲管理平臺,用來統一管理多個虛擬化集羣的框架。
       openstack目前分爲兩種openstack的運維和openstack的二次開發。
       (3)Cloud Foundry
       Cloud Foundry是一個開源的平臺即服務產品,它提供給開發者自由度去選擇雲平臺,開發框架和應用服務。Cloud Foundry最初由 VMware 發起,得到了業界廣泛的支持,它使得開發者能夠更快更容易的開發,測試,部署和擴展應用。Cloud Foundry是一個開源項目,用戶可以使用多種私有云發行版,也可以使用公共雲服務。
       (4)nosql
       nosql即not only sql。
       nosql數據庫是一種比較低級的數據庫,關係型數據庫是由nosql數據庫發展而來。
       什麼是關係型數據庫,這裏不從概念上區別,常用的SqlServer,mysql,oracle都是關係型數據庫。關係型數據庫顧名思義,數據庫關係明確嚴謹。
       而nosql則是一種數據關係不嚴謹的數據庫。一個key和value。
       (5)擴展:
      · 移動雲開發,移動雲開發目前在國內沒有資料同樣少之又少。
      雲計算的發展並不侷限於PC,隨着移動互聯網的蓬勃發展,基於手機等移動終端的雲計算服務已經出現。基於雲計算的定義,移動雲計算是指通過移動網絡以按需、易擴展的方式獲得所需的基礎設施、平臺、軟件(或應用)等的一種IT資源或(信息)服務的交付與使用模式。移動雲計算是雲計算技術在移動互聯網中的應用。   詳情查看:什麼是移動雲計算(http://www.aboutyun.com/thread-5924-1-1.html)
      · 雲平臺開發:
       這裏的雲平臺開發,是一種付費雲開發,比如微軟雲,百度雲。
       什麼是雲平臺,這裏只是給大家一個概念,但並不一定嚴格。
       雲平臺其實就是給大家搭建一個公共的開發環境,服務器放到遠端。省去了發佈的麻煩,不需要關心服務器是怎麼樣的,這些全部由服務商來負責。我們關心的就是如何開發出好的程序。比如:.net,我不關心服務器了。我只需要開發完畢,然後直接發佈,輸入網址,我們就可以訪問。? ? 想做雲平臺開發可以查看下面內容:
       百度雲平臺開發(http://www.aboutyun.com/forum-57-1.html)
       微軟雲WindowsAzure(http://www.aboutyun.com/forum-58-1.html)

      · 靈雲開發
        靈雲是一種可以用語音、手寫、拍照,手勢,將來甚至腦波識別等智能手段來操作、感知手機、計算機等數字設備的網絡雲服務,讓人機交互像人與人溝通一樣的簡單自然!
        靈雲知識普及,靈雲是什麼?它在什麼地方用?(http://www.aboutyun.com/thread-6603-1-1.html)

        總結:

        今天學習了雲計算及其相關技術的入門性知識,整體感覺就是“雜”、“累”,看來此路確實艱辛,堅持吧,“老頭子”。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章