'大數據需要Java編程基礎嗎?及linux到大數據學習步驟'

"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據學習步驟

上面雖然列出來了很多框架,但是最開始學習的時候沒必要全部都學,就算是在工作中,這些框架也不一定會全部用到。

下面我就大致列一下,各種框架的一個學習步驟吧:

注意:下面列出來的順序只是個人建議,可以根據個人實際情況來調整順序

linux基礎和javase基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。

zookeeper

zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因為目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。

hadoop

目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊

hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令…

mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。

yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以為spark任務調度資源…yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。

hive

hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。

注意:其實hive本身是很強大的,數據數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。

hbase

hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。

redis

redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的;

當然,redis也支持集群,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。

-flume

flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,為了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,為了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因為使用flume就是寫各種的配置。

-kafka

kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作為一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。

-spark

spark 現在發展的也很不錯,也發展成了一個生態圈,spark裡面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。

spark生態圈裡麵包含的有離線處理spark core,和實時處理spark streaming,在這裡需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。

spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。

-elasticsearch

elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集群,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。

目前暫且列出來這麼多吧,大數據生態圈目前還有很多比較好的技術框架,這個就需要等大家以後工作之後再去擴展了。

其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個著重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話可以在面試過程中脫穎而出。不要想著把每一個框架都搞精通,目前是不現實的,其實就算

如果能過對上面的框架都大致會使用,並且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工作也就水到渠成了。

"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據學習步驟

上面雖然列出來了很多框架,但是最開始學習的時候沒必要全部都學,就算是在工作中,這些框架也不一定會全部用到。

下面我就大致列一下,各種框架的一個學習步驟吧:

注意:下面列出來的順序只是個人建議,可以根據個人實際情況來調整順序

linux基礎和javase基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。

zookeeper

zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因為目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。

hadoop

目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊

hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令…

mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。

yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以為spark任務調度資源…yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。

hive

hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。

注意:其實hive本身是很強大的,數據數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。

hbase

hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。

redis

redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的;

當然,redis也支持集群,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。

-flume

flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,為了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,為了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因為使用flume就是寫各種的配置。

-kafka

kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作為一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。

-spark

spark 現在發展的也很不錯,也發展成了一個生態圈,spark裡面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。

spark生態圈裡麵包含的有離線處理spark core,和實時處理spark streaming,在這裡需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。

spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。

-elasticsearch

elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集群,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。

目前暫且列出來這麼多吧,大數據生態圈目前還有很多比較好的技術框架,這個就需要等大家以後工作之後再去擴展了。

其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個著重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話可以在面試過程中脫穎而出。不要想著把每一個框架都搞精通,目前是不現實的,其實就算

如果能過對上面的框架都大致會使用,並且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工作也就水到渠成了。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟
"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據學習步驟

上面雖然列出來了很多框架,但是最開始學習的時候沒必要全部都學,就算是在工作中,這些框架也不一定會全部用到。

下面我就大致列一下,各種框架的一個學習步驟吧:

注意:下面列出來的順序只是個人建議,可以根據個人實際情況來調整順序

linux基礎和javase基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。

zookeeper

zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因為目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。

hadoop

目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊

hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令…

mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。

yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以為spark任務調度資源…yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。

hive

hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。

注意:其實hive本身是很強大的,數據數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。

hbase

hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。

redis

redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的;

當然,redis也支持集群,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。

-flume

flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,為了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,為了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因為使用flume就是寫各種的配置。

-kafka

kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作為一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。

-spark

spark 現在發展的也很不錯,也發展成了一個生態圈,spark裡面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。

spark生態圈裡麵包含的有離線處理spark core,和實時處理spark streaming,在這裡需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。

spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。

-elasticsearch

elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集群,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。

目前暫且列出來這麼多吧,大數據生態圈目前還有很多比較好的技術框架,這個就需要等大家以後工作之後再去擴展了。

其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個著重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話可以在面試過程中脫穎而出。不要想著把每一個框架都搞精通,目前是不現實的,其實就算

如果能過對上面的框架都大致會使用,並且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工作也就水到渠成了。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟
"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據學習步驟

上面雖然列出來了很多框架,但是最開始學習的時候沒必要全部都學,就算是在工作中,這些框架也不一定會全部用到。

下面我就大致列一下,各種框架的一個學習步驟吧:

注意:下面列出來的順序只是個人建議,可以根據個人實際情況來調整順序

linux基礎和javase基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。

zookeeper

zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因為目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。

hadoop

目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊

hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令…

mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。

yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以為spark任務調度資源…yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。

hive

hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。

注意:其實hive本身是很強大的,數據數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。

hbase

hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。

redis

redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的;

當然,redis也支持集群,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。

-flume

flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,為了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,為了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因為使用flume就是寫各種的配置。

-kafka

kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作為一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。

-spark

spark 現在發展的也很不錯,也發展成了一個生態圈,spark裡面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。

spark生態圈裡麵包含的有離線處理spark core,和實時處理spark streaming,在這裡需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。

spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。

-elasticsearch

elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集群,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。

目前暫且列出來這麼多吧,大數據生態圈目前還有很多比較好的技術框架,這個就需要等大家以後工作之後再去擴展了。

其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個著重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話可以在面試過程中脫穎而出。不要想著把每一個框架都搞精通,目前是不現實的,其實就算

如果能過對上面的框架都大致會使用,並且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工作也就水到渠成了。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟
"

學大數據需要什麼編程基礎?大數據學習步驟是什麼?

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據是什麼?

有很多朋友問過我,大數據到底是什麼?一句話來概括

針對非軟件行業的朋友

根據你平時在超市,加油站,飯店等地方的一些消費行為,通過大數據這個技術,我們可以知道你現在的年齡範圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什麼價位的等信息。

針對軟件行業的朋友

平時我們寫的程序都是在一臺機器上運行,處理能力有限,當然,數據量也是有限的。大數據這個技術,其實就是可以實現把我們的代碼分佈在很多臺機器上去並行處理海量的數據,然後從這些海量數據中獲取有價值,有意義的信息。

學習大數據需要的基本功

1. linux基礎是必須的,最起碼需要掌握linux命令行下的基本操作命令

2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的

大數據技術板塊劃分

數據採集

flume 、kafka、 logstash 、filebeat …

數據存儲

mysql 、redis 、hbase 、hdfs …

雖然mysql不屬於大數據範疇 但是我在這也列出來了,因為你在工作中離不開它

數據查詢

hive impala elasticsearch kylin …

數據計算

實時計算

storm sparkstreaming flink …

離線計算

hadoop spark …

其他框架

zookeeper …

其實,學習大數據,就是要學習大數據生態圈周邊的各種框架。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟

大數據學習步驟

上面雖然列出來了很多框架,但是最開始學習的時候沒必要全部都學,就算是在工作中,這些框架也不一定會全部用到。

下面我就大致列一下,各種框架的一個學習步驟吧:

注意:下面列出來的順序只是個人建議,可以根據個人實際情況來調整順序

linux基礎和javase基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。

zookeeper

zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因為目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。

hadoop

目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊

hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令…

mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。

yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以為spark任務調度資源…yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。

hive

hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。

注意:其實hive本身是很強大的,數據數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。

hbase

hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。

redis

redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的;

當然,redis也支持集群,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。

-flume

flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,為了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,為了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因為使用flume就是寫各種的配置。

-kafka

kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作為一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。

-spark

spark 現在發展的也很不錯,也發展成了一個生態圈,spark裡面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。

spark生態圈裡麵包含的有離線處理spark core,和實時處理spark streaming,在這裡需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。

spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。

-elasticsearch

elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集群,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。

目前暫且列出來這麼多吧,大數據生態圈目前還有很多比較好的技術框架,這個就需要等大家以後工作之後再去擴展了。

其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個著重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話可以在面試過程中脫穎而出。不要想著把每一個框架都搞精通,目前是不現實的,其實就算

如果能過對上面的框架都大致會使用,並且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工作也就水到渠成了。

大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟
大數據需要Java編程基礎嗎?及linux到大數據學習步驟

後臺 回覆 01 麵肥拿走,記得 轉發或評論 一下 就好,謝謝支持95碼農

"

相關推薦

推薦中...