rdd.take(100).foreach(println)java
spark SQL算法
Spark Streaming優劣
優點:
一、統一的開發接口
二、吞吐和容錯
三、多種開發範式混用,Streaming + SQL, Streaming +MLlib
四、利用Spark內存pipeline計算
劣勢:
微批處理模式,準實時sql
Storm結構:數據庫
DStream
1.將流式計算分解成一系列肯定而且較小的批處理做業
2.將失敗或者執行較慢的任務在其它節點上並行執行,執行的最小單元爲RDD的partition
3.較強的容錯能力
spark stream example code編程
四. 日誌系統
1.Flume
Flume是一個分佈式的日誌收集系統,具備高可靠、高可用、事務管理、失敗重啓等功能。數據處理速度快,徹底能夠用於生產環境。
Flume的核心是agent。
Agent是一個java進程,運行在日誌收集端,經過agent接收日誌,而後暫存起來,再發送到目的地。
Agent裏面包含3個核心組件:source、channel、sink。
Source組件是專用於收集日誌的,能夠處理各類類型各類格式的日誌數據,包括avro、thrift、exec、jms、spoolingdirectory、netcat、sequencegenerator、syslog、http、legacy、自定義。source組件把數據收集來之後,臨時存放在channel中。
Channel組件是在agent中專用於臨時存儲數據的,能夠存放在memory、jdbc、file、自定義。channel中的數據只有在sink發送成功以後纔會被刪除。
Sink組件是用於把數據發送到目的地的組件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。
Apache Kafka是分佈式發佈-訂閱消息系統。
它最初由LinkedIn公司開發,以後成爲Apache項目的一部分。Kafka是一種快速、可擴展的、設計內在就是分佈式的,分區的和可複製的提交日誌服務。
Apache Kafka與傳統消息系統相比,有如下不一樣:
一、它被設計爲一個分佈式系統,易於向外擴展;
二、它同時爲發佈和訂閱提供高吞吐量;
三、它支持多訂閱者,當失敗時能自動平衡消費者;
四、它將消息持久化到磁盤,所以可用於批量消費
五. 分佈式搜索
搜索引擎是什麼?
搜索引擎是指根據必定的策略、運用特定的計算機程序從互聯網上搜集信息,在對信息進行組織和處理後,爲用戶提供檢索服務,將用戶檢索相關的信息展現給用戶的系統。搜索引擎包括全文索引、目錄索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、門戶搜索引擎與免費連接列表等。
Lucene是什麼?
Lucene一個高性能、可伸縮的信息搜索庫,即它不是一個完整的全文檢索引擎,而是一個全檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。
Elasticsearch是什麼?
Elasticsearch一個高可擴展的開源的全文本搜索和分析工具。
它容許你以近實時的方式快速存儲、搜索、分析大容量的數據。Elasticsearch是一個基於ApacheLucene(TM)的開源搜索引擎。不管在開源仍是專有領域,Lucene能夠被認爲是迄今爲止最早進、性能最好的、功能最全的搜索引擎庫。
ElasticSearch 有4中方式來構建數據庫
最簡單的方法是使用indexAPI,將一個Document發送到特定的index,通常經過curltools實現。
第二第三種方法是經過bulkAPI和UDPbulkAPI。二者的區別僅在於鏈接方式。
第四種方式是經過一個插件-river。river運行在ElasticSearch上,而且能夠從外部數據庫導入數據到ES中。須要注意的是,數據構建僅在分片上進行,而不能在副本上進行。
ELK是一套經常使用的開源日誌監控和分析系統
包括一個分佈式索引與搜索服務Elasticsearch,一個管理日誌和事件的工具logstash,和一個數據可視化服務Kibana,logstash 負責日誌的收集,處理和儲存,elasticsearch 負責日誌檢索和分析,Kibana 負責日誌的可視化。
六. 分佈式數據庫
1.Hive是什麼?
Hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供類SQL查詢功能。本質是將HQL轉換爲MapReduce程序
2.Hive的設計目標?
一、Hive的設計目標是使Hadoop上的數據操做與傳統SQL相結合,讓熟悉SQL編程開發人員可以輕鬆向Hadoop平臺遷移
二、Hive提供相似SQL的查詢語言HQL,HQL在底層被轉換爲相應的MapReduce操做
三、Hive在HDFS上構建數據倉庫來存儲結構化的數據,這些數據通常來源與HDFS上的原始數據,使用Hive能夠對這些數據執行查詢、分析等操做。
3.Hive的數據模型
Hive數據庫
內部表
外部表
分區
桶
Hive的視圖
Hive在建立內部表時,會將數據移動到數據倉庫指向的路徑,若建立外部表,僅記錄數據所在的路徑,不對數據位置作任何改變,在刪除表的時候,內部表的元數據和數據會被一塊兒刪除,外部表只會刪除元數據,不刪除數據。這樣來講,外部表要比內部表安全,數據組織液更加靈活,方便共享源數據。
4.Hive的調用方式
一、Hive Shell
二、Thrift
三、JDBC
四、ODBC
5.Hive的運行機制
一、將sql轉換成抽象語法樹
二、將抽象語法樹轉化成查詢塊
三、將查詢塊轉換成邏輯查詢計劃(操做符樹)
四、將邏輯計劃轉換成物理計劃(M\Rjobs)
6.Hive的優點
一、並行計算
二、充分利用集羣的CPU計算資源、存儲資源
三、處理大規模數據集
四、使用SQL,學習成本低
7.Hive應用場景
一、海量數據處理
二、數據挖掘
三、數據分析
四、SQL是商務智能工具的通用語言,Hive有條件和這些BI產品進行集成
8.Hive不適用場景
一、複雜的科學計算
二、不能作到交互式的實時查詢
9.Hive和數據庫(RDBMS)的區別
一、數據存儲位置。Hive是創建在Hadoop之上的,全部的Hive的數據都是存儲在HDFS中的。而數據庫則能夠將數據保存在塊設備或本地文件系統中。
二、數據格式。Hive中沒有定義專門的數據格式,由用戶指定,須要指定三個屬性:列分隔符,行分隔符,以及讀取文件數據的方法。數據庫中,存儲引擎定義了本身的數據格式。全部數據都會按照必定的組織存儲。
三、數據更新。Hive的內容是讀多寫少的,所以,不支持對數據的改寫和刪除,數據都在加載的時候中肯定好的。數據庫中的數據一般是須要常常進行修改。
四、執行延遲。Hive在查詢數據的時候,須要掃描整個表(或分區),所以延遲較高,只有在處理大數據是纔有優點。數據庫在處理小數據是執行延遲較低。
五、索引。Hive沒有,數據庫有
六、執行。Hive是MapReduce,數據庫是Executor
七、可擴展性。Hive高,數據庫低
八、數據規模。Hive大,數據庫小
hive代碼簡單例子:
建立一個名爲」test「的table
create table students (name string,age int,city string,class string) row format delimited fields terminated by ',';
load data local inpath "/opt/students.txt" into table students;
create EXTERNAL table IF NOT EXISTS studentX (name string,age int,city string,class string) partitioned by (grade string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
alter table studentX add partition (grade='excellent') location '/testM/excellent/';
alter table studentX add partition (grade='good') location '/testM/good/';
alter table studentX add partition (grade='moderate') location '/testM/moderate/';
#加載數據
load data inpath "/testtry/studentsm.txt" into table studentX partition (grade='excellent');
load data inpath "/testtry/students.txt" into table studentX partition (grade='good');
show partitions studentX;
select * from studentX where grade='excellent';
表刪除操做:drop table students;
建立一個名爲」test「的table
create table students (name string,age int,city string,class string) row format delimited fields terminated by ',';
load data local inpath "/bin/students.txt" into table students;
###
練習:建立外部表,指定數據存放位置
create EXTERNAL table IF NOT EXISTS studentX (name string,age int,city string,class string) partitioned by (class string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
alter table test add partition (class='one') location '/testmore/one';
對錶進行查詢
Select * from students;
分區表操做
hive>create table students (name string,age int,city string,class string) partitioned by (class string) row format delimited fields terminated by ',';
hive>load data local inpath "students.txt" into table students partition (class='one');
hive>show partitions students;
hive>select * from students where grade='two';
查詢操做
group by、 order by、 join 、 distribute by、 sort by、 clusrer by、 union all
hive常見操做安全
Hbase 的模塊:
原子性(是指不會被線程調度機制打斷的操做,這種操做一旦開始,就一直運行到結束,中間不會有任何contextswitch(切換到領一個線程)),一致性,隔離性,持久性數據結構
Region- Region用於存放表中的行數據
Region Server架構
Master框架
Zookeepercurl
HDFS
列式存儲格式 Parquet
Parquet 是面向分析型業務的列式存儲格式,由 Twitter 和 Cloudera 合做開發, 2015 年 5 月從 Apache 的孵化器裏畢業成爲 Apache 頂級項目,最新的版本是 1.8.0 。
列式存儲和行式存儲相比的優點 :
能夠跳過不符合條件的數據,只讀取須要的數據,下降 IO 數據量。
壓縮編碼能夠下降磁盤存儲空間。因爲同一列的數據類型是同樣的,可使用更高效的壓縮編碼(例如 Run Length Encoding 和 DeltaEncoding )進一步節約存儲空間。
只讀取須要的列,支持向量運算,可以獲取更好的掃描性能。
Hive操做
Hive
其餘知識點
MLlib是spark的能夠擴展的機器學習庫,由如下部分組成:通用的學習算法和工具類,包括分類,迴歸,聚類,協同過濾,降維。
數據分析常見模式:
一、Iterative Algorithms,
二、Relational Queries,
三、MapReduce,
四、Stream Processing
Scala的好處:
一、面向對象和函數式編程理念加入到靜態類型語言中的混合體
二、Scala的兼容性—-可以與Java庫無縫的交互
三、Scala的簡潔性—-高效,更不容易犯錯
四、Scala的高級抽象
五、Scala是靜態類型—-類型推斷
六、Scala是可擴展的語言
ElasticSearch 基礎代碼:
基礎問答題Q:你理解的Hive和傳統數據庫有什麼不一樣?各有什麼試用場景。A:一、數據存儲位置。Hive是創建在Hadoop之上的,全部的Hive的數據都是存儲在HDFS中的。而數據庫則能夠將數據保存在塊設備或本地文件系統中。二、數據格式。Hive中沒有定義專門的數據格式,由用戶指定,須要指定三個屬性:列分隔符,行分隔符,以及讀取文件數據的方法。數據庫中,存儲引擎定義了本身的數據格式。全部數據都會按照必定的組織存儲。三、數據更新。Hive的內容是讀多寫少的,所以,不支持對數據的改寫和刪除,數據都在加載的時候中肯定好的。數據庫中的數據一般是須要常常進行修改。四、執行延遲。Hive在查詢數據的時候,須要掃描整個表(或分區),所以延遲較高,只有在處理大數據是纔有優點。數據庫在處理小數據是執行延遲較低。五、索引。Hive沒有,數據庫有六、執行。Hive是MapReduce,數據庫是Executor七、可擴展性。Hive高,數據庫低八、數據規模。Hive大,數據庫小Q:Hive的實用場景A:一、Data Ingestion (數據攝取)二、Data Discovery(數據發現)三、Data analytics(數據分析)四、Data Visualization & Collaboration(數據可視化和協同開發)Q:大數據分析與挖掘方法論被稱爲CRISP-DM方法是以數據爲中心迭代循環進行的六步活動A:它們分別是:商業理解、數據理解、數據準備、創建模型_、模型評估、結果部署_。Q:數據分析挖掘方法大體包含 ( ):A:1.分類 Classification2.估計Estimation3.預測Prediction4. 關聯規則Association Rules5. 聚類Cluster6. 描述與可視化Description and VisualizationQ:在數據分析與挖掘中對數據的訪問性要求包括交互性訪問、批處理訪問_、迭代計算、數據查詢,HADOOP僅僅支持了其中批處理訪問,而Spark則支持全部4種方式。Q:Spark做爲計算框架的優點是什麼?A:一、Spark的中間數據放到內存中,對於迭代運算效率更高二、Spark比Hadoop更通用三、Spark提供了統一的編程接口四、容錯性– 在分佈式數據集計算時經過checkpoint來實現容錯五、可用性– Spark經過提供豐富的Scala, Java,Python API及交互式Shell來提升可用性