0.前沿html
PS:大數據的相關技術
框架:hadoop、spark
集羣管理:Mapreduce、yarn、mesos
開發語言:java、Python、scala、pig、hive、spark SQL
數據庫:NoSQL、HBase、Cassandra、impala
搜索系統:Elastic Search
採集系統:flume、sqoop、kafka
流式處理:spark Streaming、storm
發行版:horton works、cloudera、MapR
管理系統:Ambari、大數據管理平臺
機器學習:Spark MLlib 、Mahout
1.大數據時代java
PS:大數據最後也是爲人服務的,根據數據預測分析將來
PS:雲計算爲計算資源的底層,支撐着上層的大數據處理
PS:大數據分析=數據+算法
2.大數據軟件架構node
HDFS
PS:Hadoop框架是java編寫,核心是hdfs與MapReduce
PS:Secondary NameNode的做用
https://blog.csdn.net/remote_roamer/article/details/50675059
MapReduce
PS:看看MapReduce的處理示例
首先是切割數據,對指定數據進行鍵值對的操做,按照鍵值排序,reduce按全部的值統計
MapReduce進程示例mysql
PS:jobTracker:是主節點,只有一個,管理全部的做業。老闆linux
tasktracker:負責maptask、reducetask、shuffle等操做。 包工頭、包身工web
sort會對鍵值進行排序,shuffle會把鍵值相同元素髮給同一個reduce函數算法
PS:如今已經用MapReduce寫並行程序了,一般都是用spark等工具來寫sql
Yarn(另外一種資源協調者)數據庫
PS:在早期,MapReduce是上圖的那種狀況,用着還不錯。可是hadoop 2出來後,狀況就改變了,傳統的架構模式沒法勝任,就出現了yarn。最初是爲了修復MapReduce的不足。 他把老的jobtracker核心任務分爲 resource manager(全局資源管理)和app Master編程
PS:resource manager就是一個調度器
node manager是沒太機器的代理,執行應用程序的容器
app master是一個框架庫,從上面二者協同運行與監控任務
cantainer是yarn爲了資源隔離提出的一個框架
總之,yarn能夠說是一個雲操做系統,她負責集羣的資源管理。 Spark也是支持yarn 的
Zookeeper統一分佈式系統的狀態
PS:Zookeeper是一個集中式的服務,主要負責分佈式任務調度,它用來完成 配置管理,名字服務,分佈式鎖以及集羣管理等工做。
Ambari
PS:他是一種基於web的hadoop管理工具
Spark(內存計算框架) 實時
PS:Spark是相似於Hadoop的Mapreduce。不一樣在於1.輸出結果保存在內存中,(mapreduce->HDFS);2.速度快;3.spark對內存要求很是高,
一個節點一般要24g
PS:Hadoop使用數據複製來實現容錯性;Spark使用RDD(resilient distributed datasets,彈性分佈式數據集)數據模型來實現數據的容錯性。
PS:特別支持scala編寫程序,特別適合機器學習。 下圖是spark的組件

PS:spark很牛逼。可是批處理能力仍是不如MapReduce;
spark sql和hive sql仍是有差距;
spark的統計功能和r語言沒有可比性
Scala
PS:Spark是用scala開發的。scala把源文件編譯成class文件,運行在jvm上,而且
兼容現有的java程序,能夠調用java中的類庫。
PS:回頭能夠看看《Scala編程思想》
Spark SQL
PS:考慮到你們仍是習慣用sql訪問數據,設計人員給予HDFS現有的RDD執行SQL查詢;他的發展是基於hive和shark
Spark Streaming
PS:是基於Spark引擎對數據流進行不斷的處理。
PS:下圖爲spark Streaming的案例。
flume採集日誌數據,而後kafka集羣(以高可靠性收集與緩衝數據),而後再從kafka集羣中不斷的拉數據,最後解析日誌。

3.安裝與配置大數據軟件
PS:Hadoop有不少的發行版,主要有三個。Apache、cloudera、還有hortonworks(咱們用的就是這個cenos6.5)
PS:在給服務器安裝配置hadoop的時候,還要保持主機時間的同步,就須要NTP
4.大數據存儲:文件系統
HDFS文件格式
1.SequenceFile
PS:他是一種二進制文件,以key,value形式序列化到文件中。
2.TextFile(文本格式)
PS:文本文件、xml、json都是文本格式,速度沒有二進制的快
3.RCFile
PS:列存儲,hive就是這樣作的
4.Avro
PS:是一種支持數據密集型的二進制文件
5.大數據存儲:數據庫
NoSql
PS:not only SQL,泛指 非關係數據庫;Nosql之一的HBase比較在大數據領域比較經常使用。
HBase是很是好的實時查詢框架
PS:HBase使用key-value存儲,HDFS做爲存儲支持,使用MapReduce提供計算能力。
PS:HBase與RDBMS的區別
https://www.cnblogs.com/wishyouhappy/p/3715566.html
PS:HBase架構
1.client、HMaster、HRegionServer經過內部的RPC通訊協議進行通訊。
2.HMaster主要負責Table和Region的管理工做,能夠有多個
3.HRegionServer主要負責相應用戶io請求,向HDFS讀寫數據,是HBase中的核心模塊。HReginServer又是由多個Hregion對象組成
4.HRegion每一個HRegion對應着Table中的一個Region。每一個Hregion由多個HStore組成。
5.HStore:每一個HStore對應着Table裏的Column Family。他是存儲的核心,由兩部分組成,一個是MemStore,另外一個是StoreFiles.
當有數據寫入的時候,會先到MemStore,當MemStore滿了之後會flush成一個StoreFiles(MemStore就是一個臨時存放點);當StoreFiles
達到必定的個數的時候會合併成一個。
6.Hlog是在數據在寫入MemStore的時候,同時也會在Hlog 中放置一份。當出現宕機的是時候,會從Hlog中取數據,保證數據不被丟失
PS:HBase編程
整個數據模型Schema->Table->Column Family->Column->RowKey-》TimeStamp->Value
6.大數據訪問:SQL引擎層
Phoenix
PS:由於HBase訪問比較麻煩,仍是列式,有專用的訪問方法。那麼Phoenix就出現了,他是一箇中間層。專門用來JDBC API來建立查詢表,比較方便。
他會把JDBC API轉化成 HBase的scan和服務端的過濾器,執行後生成標準的JDBC結果返回。
就是讓開發任用SQL和JDBC訪問Hbase。
Hive 非實時、面向批處理
PS:由於Mapreduce寫起來比較麻煩,因此使用Hive運行相似SQL的語言來執行MapReduce程序。
PS:hive查詢有必定的延時性,一般用來靜態(離線)的數據分析和挖掘。
Hive架構圖 ;
1.JDBC是編程接口
2.驅動器對輸入進行編譯、優化和執行
3.MetaStore(元數據存儲)是一個獨立的RDBMS,默認是Derby。對於生產系統推薦使用mysql
PS:若是須要實時查詢能夠將HBase和Hive結合在一塊兒使用Tez
PS:Hive只用查詢、分析和彙集數據(無增刪改)
PS:經過hive能夠將hdfs上的數據映射到數據庫中
Hive的數據類型
https://blog.csdn.net/xiaoqi0531/article/details/54667393
PS:支持高度定置化,知足各類需求,不用藉助外部方式就可以完成本身工做。
Pig
PS:和Hive提供功能相似,簡單的對比
https://blog.csdn.net/dashujuedu/article/details/53538609
ElasticSearch(全文搜索引擎)
PS:是基於Lucene的實時的分佈式搜索分析引擎
7.大數據採集和導入
任何完整的大數據平臺,都是如下過程:
數據採集、數據存儲、數據管理、數據處理、數據展示
PS:一般都是採集網站中的日誌,採集的工具使用Flume和kafka
Flume
PS:她將數據從產生、傳輸、處理並最終寫入目標路徑的過程抽象爲數據流。
PS:事件是flume傳遞的一個數據單元
kafka(分佈式消息隊列)
PS:用在不一樣系統之間傳遞數據
PS:Kafka架構---依賴於zookeeper
Broker:Kafka集羣包含一個或者多個服務器,該服務器被稱爲broker
Producer:在消息保存的時候,會對topic進行分類,發送消息的叫作producer,接受者叫consumer
Topic:集羣中的消息都有一個類別,叫作topic;一個topic的消息保存在一個或者多個broker上面;消息是按照topic組織的,每一個topic又分爲多個partition(爲了負載均衡)
Sqoop(SQL to Hadoop)
PS:他是數據庫導入導出工具,HDFS<->關係型數據庫;使用MapReduce實現的;一般用在linux環境中。
Storm實時計算
http://www.cnblogs.com/bee-home/p/8591302.html
splunk
PS:使用splunk能夠蒐集、索引和分析所用應用程序所生成的實時數據。
8.大數據管理平臺
PS:
9.Spark技術
PS:Spark主要是替換Mapreduce計算模型而已; Spark應用程序,他創建在同一抽象的RDD之上
PS:主程序(叫作Driver)中的sparkcontext對象協調spark應用程序。sparkcontext對象首先鏈接到多種集羣管 理器(如:yarn),
而後在集羣點上得到Executor。sparkcontext把 應用代碼發給executor,exe cutor負責應用程序的計算和數據存儲。
每一個應用程序都有本身Executor.Executor爲應用程序提供一個隔離的運行環境,以task 的形式執行任務。
**action: 在數據集上運行計算後返回結果值
**transformations:轉換。從現有的RDD建立一個新的RDD
PS:RDD(彈性分佈式數據集)
分區(partiion):一個RDD由多個分區partition組成
算子(compute):用於說明在RDD上執行何種計算,能夠理解爲函數。;算子是RDD中定義的函數,Spark在運行過程當中經過算子對RDD進行建立、轉換和行動。
依賴(dependency):計算每一個RDD對父RDD的依賴列表
PS:下面按照數據處理步驟描述各個算子
1.輸入:在spark程序運行中,數據從hdfs或parallelize方法輸入scala集合或者數據到spark建立RDD,數據進入spark空間。
2.運行:在spark輸入數據造成RDD後即可以經過變換算子,對數據進行操做並將RDD轉化爲新的RDD,經過Action算子,觸發spark提交做業。若是數據須要複用,能夠經過cache算子,
將數據緩存到內存。
3.輸出:程序運行結束後,數據會存儲到分佈式存儲中(如saveASTextFile輸出到HDFS),或scala數據或集合中(collect輸出到scala集合,count返回scala int型數據)
PS:Spark SQL
PS:Spark Streaming
PS:GraphX圖計算模型
10.大數據分析
主要包含1.數據挖掘算法 2.大數據預測性分析 3.可視化分析PS: