斷斷續(xù)續(xù)的學了半年的大數(shù)據(jù),只是會搭,會用,可一回頭,感覺又啥都不會,從頭記錄一下
大數(shù)據(jù)是當前很火的一個技術方向,說白了,其實就是一系列工具的組合使用,構建的更加完善,形成了一套技術體系,當然,技術只是這個方向很小的一個部分,個人比較關注和有興趣而已
大數(shù)據(jù)的技術體系
大數(shù)據(jù)的技術體系,總的來說從源頭到應用可以分為以下幾個
1. 數(shù)據(jù)源,比如互聯(lián)網的各種數(shù)據(jù),智能設備的數(shù)據(jù),社交、電商等
2.數(shù)據(jù)收集,對數(shù)據(jù)源產生的數(shù)據(jù)進行收集,我們只討論軟件方面所需的工具,比較流行的工具有Flume、Logstash、 Sscribe
3. 數(shù)據(jù)存儲,對上一步所收集到的數(shù)據(jù)進行存儲,以便之后進一步的分析,常用的有HDFS(Hadoop自帶,主要為Hadoop自己提供更為方便的存儲,方便之后的計算)、Kafka(比較流行的分布式消息訂閱系統(tǒng),可以把數(shù)據(jù)按照隊列的方式存儲,便于后續(xù)程序消費,不是太熟悉,以后進行深入剖析)、Redis(一個分布式內存數(shù)據(jù)庫,它的最大特點就是數(shù)據(jù)在內存中存放,存取速度快,不過只適合臨時存放數(shù)據(jù)吧)、Hbase(典型的一個nosql數(shù)據(jù)庫,目前的理解是可以作為hdfs的一個補充,支持隨機讀寫)、MySQL(著名的關系型數(shù)據(jù)庫)、Oracle等
4.資源管理,對計算服務的各種資源進行調配,以達到最大化利用集群性能的目的
5.計算層,對數(shù)據(jù)進行處理,以滿足各種業(yè)務需求。MapReduce(批處理計算框架,適合做大規(guī)模的離線計算),SparkStreaming(適用于流處理)、Storm(流處理)、Flink(流處理)、SparkSQL(交互式數(shù)據(jù)分析)
6. 數(shù)據(jù)分析層,對處理后的數(shù)據(jù)進行分析,為公司決策等各種場景提供參考意見。主要的技術有數(shù)據(jù)倉庫(Hive、Pig)、數(shù)據(jù)挖掘(SparkMLLib)、OLAP(在數(shù)據(jù)倉庫的基礎上進行數(shù)據(jù)分析,比如Druid)
7.數(shù)據(jù)可視化,對最終結果以圖表等直觀方式進行展示
應用領域
大數(shù)據(jù)的應用領域很廣,簡單介紹:
1. 互聯(lián)網? 比如搜索引擎,推薦系統(tǒng),廣告系統(tǒng)
以上列舉的三個互聯(lián)網的應用有時候是沒有明顯界限的,搜索引擎需要對海量網頁數(shù)據(jù)進行處理,建立網頁數(shù)據(jù)庫,并根據(jù)搜索結果進行排名推薦,根據(jù)關聯(lián)性推薦合適的廣告等
2.電商? 其實也算互聯(lián)網吧(個人理解) 應用比如用戶畫像、推薦系統(tǒng)、行為分析等
對此了解不太多,就不多說了
3. 醫(yī)療領域? 主要有流行病預測、病情分析
4. 金融領域? ?主要有風控系統(tǒng),欺詐分析
5.視頻領域? 主要有視頻分析、廣告系統(tǒng)、推薦系統(tǒng)
需要的技能
語言 Java(基本掌握)/Python(會用)/Scala(待深挖)
Linux常用命令、Shell編程
HDFS原理、MapReduce原理及編程、Yarn原理、Hadoop集群搭建
Hive原理、HQL、自定義函數(shù)、數(shù)據(jù)倉庫設計
Spark原理、SparkStreaming編程、SparkSQL
Kafka原理、配置搭建、API接口開發(fā)及管理
Flume原理、搭建
Zookeeper原理、搭建