大數據技術基礎
計算機操作系統
操作系統統籌協調計算機硬件系統的工作,具體使CPU可以進行邏輯與數值運算,主存儲器能夠加載應用數據與程序代碼,硬盤可以順利存入與讀出信息,輸入設備、輸出設備可以根據需要實時寫入、寫出必要信息等。因此,操作系統實際是整個計算機硬件系統的“CEO”,擔負着整個計算機硬件系統的管理、協調和運作的全部任務。
Linux操作系統
-
三個發展階段
- 1.單一個人維護階段
- 2.廣大黑客志願者加入階段
- 3.Linux核心的細分工、快速發展階段
-
核心版本編號示例
-
Linux Kernel與Linux Distribution
-
Linux的核心版本是Linux Kernel的版本
-
Linux Distribution是專門爲使用者量身打造的Linux Kernel + Software + Tools的可安全安裝程序的綜合發佈版本,可幫助日常使用者在Linux系統下完成工作和其他相關任務。
-
Linux Distribution主要版本
-
主要分爲兩大系統
- 1.使用RPM(Red-Hat Package Manager)方式安裝軟件的系統,主要有RHEL、SuSE、Fedora等
- 2.使用Debian的DPKG方式安裝軟件的系統,包括Ubuntu、Debian、B2D等
-
-
兩者關係
-
-
Linux的主要應用場景
- (1)企業環境的應用,主要包括網絡服務器(目前最熱門的應用)、關鍵任務的應用(金融數據庫、大型企業網管環境)、學術機構的高效能運算任務等。
- (2)個人環境的使用,主要包括桌面計算機系統(實現和Windows系統一樣的桌面操作系統)、手持系統(PDA、手機端系統如Android)、嵌入式系統(包括路由器、防火牆、IP分享器、交換機等)。
- (3)雲端的運用,主要包括雲程序(雲端虛擬機資源)、雲端設備等。
編程語言
發展史
-
語言可以使人們以更加規範、方便和快捷的方式進行交流。
-
伴隨着晶體管計算機的誕生(上世紀40年代),人們也編寫了第一種真正意義上的編程語言,這就是機器語言。
-
機器語言太難理解和書寫,且極易出錯,彙編語言(Assembly Language)就應運而生。
- 使用助記符(Mnemonics)來代替機器指令的操作碼(0和1的指令集)
- 用標號(Label)和地址符號(Symbol)分別來代替機器指令或者操作數值的存儲地址
- 其大體的工作原理
- 機器語言和彙編語言統稱爲低級語言(1946—1953年)。
-
因彙編語言未能實現與自然語言的對接,編程語言進入高級語言時代(1954至今)
-
1954,John Backus在紐約發佈人類第一個高級編程語言FORTRAN(FORmula TRANslator),主要用於做數值/科學計算
-
1957,第一個FORTRAN編譯器在IBM 704計算機上實現,並首次成功運行了FORTRAN程序。
-
1960年出現了第一個結構化語言Algol(Algorithmic Language),它是算法語言的鼻祖,目的在於純粹面向描述計算過程,其語法也是用嚴格的公式化的方法說明的。其標誌着程序語言設計成爲一名獨立的學科
-
1964年,美國達特茅斯學院的J.Kemeny和T.Kurtz開發了BASIC(Beginners All Purpose Symbolic Introduction Code),該語言只有26個變量、17條語句,是初學編程人員的福音。
-
後來,編程語言發展到了使用編譯器的階段,出現了我們都熟知的C語言(Compiler language)。這種語言的核心在於編譯器,而編譯器的作用就是把某種語言寫的代碼轉變爲機器語言,從而讓計算機識別並運行。
-
高級語言經過編譯器時代的發展,過渡到面向對象時代(1995年開始),編程人員終於可以針對特殊的對象進行一對一的編程處理。業內稱這種方法爲面向對象程序設計(Object-Oriented Programming,OOP)。
-
隨着面向對象程序設計語言的不斷成熟,IDE(Integrated Develop Environment)作爲提供程序開發環境的應用程序開始得到發展。
- IDE一般包括代碼編輯器、編譯器、調試器和圖形用戶界面工具,也就是集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套件。這樣的集成開發環境大大方便了編程人員的開發工作。隨着Java語言的全球風靡,與之相關的IDE也不斷地發展起來。
-
Python
-
Python語言誕生於1991年(比Java還早,最早發行於1994年)
-
優點
- 可讀性強
- 代碼量少
- 動態語言
- 編寫簡單
- 應用廣泛
數據庫
數據庫技術是信息技術的核心技術。顯然大數據時代仍然要依賴數據庫技術提供可靠、安全、高效的數據存儲和查詢服務。
SQL數據庫
- 1970年,IBM公司的研究員E.F.Codd博士提出的關係模型的概念奠定了整個關係模型的理論基礎
- 1970年,關係模型建立後,IBM公司在San Jose實驗室投入了大量的人力、物力研究出著名的System R數據庫項目,初始目的在於論證關係型數據庫的可行性。
- SQL最早在1986年由ANSI(American National Standards Institution)認定爲關係型數據庫語言的美國標準,同年即公佈了標準的SQL文本。
- 基本可以說SQL數據庫已經發展到了品類齊全、種類繁多的產品格局
NoSQL數據庫
-
NoSQL採用了一些主要包括鍵-值、列族、文檔等非關係模型不同於SQL的數據庫管理系統設計方式
-
三大特點
-
1.優秀的可擴展性
- SQL數據庫嚴格遵守ACID設計原則,所以一般很難實現硬件存儲設備的“橫向擴展”(多集羣機器聯動服務)。
-
2.方便多用的數據類型承載能力
- NoSQL數據庫在設計之初就放棄了傳統數據庫的關係數據模型,旨在滿足大數據的處理需求,採用諸如鍵-值、列族、文件集等多樣的新型數據模型,並且對圖形數據的兼容性也日漸提升
-
3.NoSQL數據服務與雲計算可以緊密融合
- 雲計算和雲服務是當前時代的信息服務高地,其很多特點如水平擴展、多用戶並行處理、遠程登錄操控等都可以與NoSQL數據庫實現無縫對接
-
-
主要類型
-
典型的NoSQL數據庫通常包括鍵-值數據庫、列族數據庫、文檔數據庫和圖形數據庫4種類型
-
鍵值數據庫
-
列族數據庫
- 列族數據庫(Column-Family DataBase)每個行鍵索引指向的是一個列族,列族數量管理者自己制定,這樣相對鍵-值數據庫每個行鍵只能針對一個數據屬性的不足得到了大大的改善。
- 同時,列族數據庫支持不同類型的數據訪問模式,同一個列族可以被同時一起放入計算機內存之中,這樣雖然消耗了內存存儲,卻帶來了更好的數據響應性能。
-
文檔數據庫
- 文檔數據庫(Document DataBase)的數據模式實際是一個鍵-值對應一個文件,而文檔是數據庫的最小單位。
-
圖形數據庫
- 圖形數據庫(Graph DataBase)以圖形爲數據庫基礎,每一個圖形代表一個數據庫節點。
- 其組織模式以圖論爲基礎,將一個圖簡化爲一個數學概念,其表示了一個對象結合,而不同圖形對象直接的關係則用關係鍵-值對來標明。
- 數據模型設計理念以圖形爲主題,可以高效地存儲不同圖形節點之間的關係,專門用於處理具有高度相互關聯關係的數據,並使其以圖形節點形式展現,十分適用於社交網絡、模式識別、依賴分析、推薦系統及路徑尋找等應用場景。
-
NewSQL數據庫
- NewSQL數據庫的誕生是爲了解決NoSQL在難以滿足海量數據查詢和數據挖掘方面的需求等方面的問題
- 其綜合了NewSQL綜合了NoSQL和SQL數據庫的技術優勢,它既能像NoSQL數據庫一樣具有對海量數據足夠優秀的擴展和併發處理能力,同時也具備SQL數據庫對ACID和結構化快速高效查詢的特點。
- 目前市場上具有代表性的NewSQL數據庫主要包括Spanner、Clustrix、GenieDB、ScalArc、Schooner、VoltDB、RethinkDB、Akiban、CodeFutures、ScaleBase、Translattice、NimbusDB、Drizzle、Tokutek、JustOneDB等。但是,在嚴格意義上符合NewSQL數據庫全部標準的理想NewSQL數據庫或者標準的NewSQL數據庫目前還沒有出現。
算法
算法(Algorithm)是數學處理的靈魂和核心,也是實現現實事務數學化、公式化和邏輯化處理的橋樑,可以說算法是信息時代連通現實社會和虛擬世界的立交橋。
算法
- 算法是解決方案的準確而完整的描述,實質是一系列解決問題的高度符合邏輯性和可執行性的指令集合,其代表着用系統的方法描述解決問題的策略與機制。
- 其具體包括把符合算法要求的數據按照一定的數據結構方式進行準備、完整輸入並存儲,經過綜合算法指令的步步實現後,在確認每個步驟合理完成後進行最後的結果輸出和展現。
- 其評價標準爲可行性、執行效率和對計算機的硬件要求
傳統算法(數據分析)和大數據時代算法(數據科學)的區別
大數據時代的算法
-
機器學習
-
簡介
- 最終目的在於專門研究如何用計算機模擬或者說實現人類的學習行爲,以通過計算機的模擬學習獲取新的知識和技能,並通過學習得來的“智慧”和理論來指導實現數據的分析和應用,尤其是對未來的預測和判斷。
- 機器學習作爲算法理論,是一門涉及多領域的交叉學科,包括概率論、數理統計、神經網絡、線性代數、數值分析、計算機算法實現等多方面的知識,包含數學、計算機、哲學、人體學等的多種基礎科學。
- 機器學習是在不設定任何前提規則的情況下由計算機完成學習,進而進行相應判斷工作的科學。也就是讓計算機模擬人類的思維學習方式去對海量的數據和邏輯關係進行學習研究,通過計算機的算法給出結論和判斷。
- 目前最成熟、最流行的便是機器學習(Machine Learning)
-
技術優勢
- (1)由於機器學習全部基於數據,排除了人類主觀意識的干擾和經驗主義,其學習或者說預測結果更加可信,並且隨着數據量的增加帶來更高的精確性。
- (2)機器學習可以由計算機實現自動的數據預測和一系列的數據推薦產品級應用。
- (3)機器學習算法理論上可以在毫秒級別實現並給出學習結果,這就允許我們進行事務的實時分析處理和運用,相比人類管理的層層審批制效率提高很多。
- (4)機器學習算法擴展性良好,理論上可以處理所有可用數據。
-
不足
- (1)機器學習的算法需要有些提前的預判(打標籤),並且需要儘量完善、充實數據。
- (2)機器學習一般不能得到100%正確的預測結果,具有一定的風險。
-
目前較流行的機器學習算法
-
大數據系統
Hadoop平臺
-
簡介
- Hadoop平臺是Apache的開源的、理論上可無限擴展的分佈式計算平臺,其設計的初始目的是讓大型計算機集羣對海量的數據進行常規編程計算實現。
- Hadoop集羣框架在設計之初即考慮到會出現安全隱患,在出現大規模的集羣崩潰的情況下,開發應用人員需要做出人工處理。
-
主要模塊
-
(1)Hadoop Common
- Hadoop Common是平臺統一的集成,用來支持其他模塊的共同工作,它就好比是計算機系統的主板,用來連通其他組件。
-
(2)HDFS
- HDFS全稱爲Hadoop Distributed File System,它是平臺提供的分佈式集羣存儲框架,支持平臺對海量數據進行集羣存儲,並且保證數據的可靠、穩定和安全。
-
(3)YARN
- YARN即Yet Another Resource Negotiator,是Hadoop平臺的集羣資源管理和工作流程控制框架。
-
(4)MapReduce
- MapReduce是平臺YARN框架管理下的分佈式集羣高效計算框架。
-
-
三大特徵
-
1)Hadoop平臺的三大組成
- ① 可靠、高效的分佈式大數據存儲框架—HDFS。
- ② 用於並行集羣處理的計算框架—MapReduce、Crunch、Cascading、Hive、Tez、Impala、pig、Mahout等。
- ③ 平臺集羣資源管理器—YARN和Slider。
-
(2)Hadoop平臺在經濟、商業和技術領域的適應性和優勢
- ① 經濟性。
- ② 商業性。
- ③ 技術性。
-
(3)Hadoop平臺的典型技術特點
- ① 商業實用性強。
- ② 糾錯能力強。
- ③ 優秀的隨時可擴展性。
- ④ 簡單實用。
-
Spark平臺
-
簡介
- Hadoop平臺下的MR(MapReduce)分佈式計算框架存在致命的缺陷,MR只能進行一次性編程計算處理,然後再存入HDFS,所以MR就很難進行海量數據的迭代運算。爲解決這一問題,Spark應運而生
- Spark最初是2009年由加州大學伯克利分校的RAD實驗室開啓的研究項目,此後RAD實驗室更名爲AMPLab,此項目組在利用開源平臺Hadoop MapReduce分佈式運算框架後意識到了其在迭代運算方面的不足,開始計劃通過內存計算的方式改進MR的相關運算不足的缺陷,於是在2011年,AMPLab發展了更高運算部分的Shark和Spark Streaming,這些組件被稱爲Berkeley Data Analytics Stack(BDAS)。這些都是Spark正式版本的主要組成部分,Spark作爲開源項目最開始版本,完成於2010年3月,此後於2013年6月轉爲Apache軟件基金會旗下的頂級開源項目。
- 由於Hadoop也是Apache軟件基金會旗下的頂級大數據平臺項目,這樣無疑加速了 Spark 的發展,其具體發行版本如圖 2-10所示。
-
計算機的運算技術趨勢
-
Spark的發行版本
-
Spark與MapReduce的區別
大數據的數據類型
結構化數據
- 傳統關係型數據庫數據,也稱作行數據,是由二維表結構來邏輯表達和實現的數據,嚴格地遵循數據格式與長度規範,主要通過關係型數據庫進行存儲和管理。
- 結構化數據可以通過固有鍵值獲取相應信息,並且數據的格式嚴格固定,如RDBMS data。最常見的結構化就是模式化,結構化數據也就是模式化數據。
- 大多數傳統數據技術應用主要基於結構化數據,如銀行業數據、保險業數據、政府企事業單位數據等主要依託結構化數據。結構化數據也是傳統行業依託大數據技術提高綜合競爭力和創新能力的主要數據類型。
半結構化數據
-
半結構化數據和普通純文本相比具有一定的結構性,但和具有嚴格理論模型的關係型數據庫的數據相比更靈活。
-
它是一種適用於數據庫集成的數據模型,也就是說,適於描述包含在兩個或多個數據庫(這些數據庫含有不同模式的相似數據)中的數據。
-
它是一種標記服務的基礎模型,用於在Web上共享信息。
-
人們對半結構化數據模型感興趣主要是它的靈活性。特別地,半結構化數據是“無模式”的。更準確地說,其數據是自描述的。它攜帶了關於其模式的信息,並且這樣的模式可以隨時間在單一數據庫內任意改變。這種靈活性可能使查詢處理更加困難,但它給用戶提供了顯著的優勢。
-
特徵
-
半結構化數據的結構模式具有下述特徵。
- ① 數據結構自描述性。結構與數據相交融,在研究和應用中不需要區分“元數據”和“一般數據”(兩者合二爲一)。
- ② 數據結構描述的複雜性。結構難以納入現有的各種描述框架,實際應用中不易進行清晰的理解與把握。
- ③ 數據結構描述的動態性。數據變化通常會導致結構模式變化,整體上具有動態的結構模式。
-
非結構化數據
-
非結構化數據一般指無法結構化的數據,如圖片、文件、超媒體等典型信息,在互聯網上的信息內容形式中佔據了很大比例。
-
具體的非結構化數據處理技術包括:
- ①Web頁面信息內容提取;
- ②結構化處理(含文本的詞彙切分、詞性分析、歧義處理等);
- ③語義處理(含實體提取、詞彙相關度分析、句子相關度分析、篇章相關度分析、句法分析等);
- ④文本建模(含向量空間模型、主題模型等);
- ⑤隱私保護(含社交網絡的連接型數據處理、位置軌跡型數據處理等)。
大數據應用開發流程
典型流程
- 1.提出商業需求並做出初步設想
- 2.根據需求確定必需的數據集
- 3.數據採集
- 4.數據預處理
- 5.數據分析和挖掘
- 6.大數據產品可視化
數據科學算法的應用流程
典型流程
- 1.科學假設和建模
- 2.評測有效性
- 3.根據評測結果提出改進意見
- 4.交流項目進展
XMind: ZEN - Trial Version