大數據方向
1、大數據生態圈
-
hadoop(HDFS/MapReduce/Yarn)
- 分布式存儲àRDBMS(excelt6萬多、mysql140萬-400萬
- 計算:並行計算、離線計算
-
hbase
- NOSQLRDBMS結構化數據半結構化/非結構化
- 列式hbase、clickhouse(獨立產品)
- 場景:足跡
- 計算:實時計算MR
-
hive
- HQL類似於SQL,功能簡單
- 不懂Java也可以做數據分析
- 降低成本
-
storm
- 流式處理框架
-
spark
- 一棧式解決方案
- 數據源:hadoop、hdfs、hive、kafka、rdbms、fs
- 計算:內存計算、SQL、流式處理、結構化流處理
- 人工智能:機器學習、深度學習pyspark(使用Spark集群和hadoop集群)
- 圖計算
- 批處理流
- 3.xpython
-
flink
- 主要是阿里在用,也是其自主研發
- 實時流
- MR支持不好
- python支持不好
2、軟件研發
-
數據庫
- MySQL
- Oracle
-
前端
- HTML5+CSS3
- JavaScript
- jQuery
- Vue
-
后端
- SSM
- SpringBoot
- SpringCloud
-
消息隊列
- kafka
-
大數據
- 綜合運用
-
人工智能
- 預測
3、大數據所需技能
來自轉載
1、Java
Java版本有JavaSE、JavaEE、JavaME,三個版本,對應的領域是服務器端、桌面端、嵌入式開發移動端,其中嵌入式開發移動端幾乎已被淘汰,初學者只需要學習Java的標准版JavaSE就可以了,最后進行進階學習EE版本即可。像Servlet、JSP、Tomcat、Struts、Spring、Hibernate,Mybatis都是JavaEE方向的技術在大數據技術里用到的並不多,只需要了解就可以了。
2、Linux
因為大數據相關軟件都是在Linux上運行的,所以Linux要學習的扎實一些。
3、Hadoop
這是現在流行的大數據處理平台幾乎已經成為大數據的代名詞,所以這個是必學的。Hadoop里面包括幾個組件HDFS、MapReduce和YARN,HDFS是存儲數據的地方就像我們電腦的硬盤一樣文件都存儲在這個上面,MapReduce是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快所以它叫數據的批處理。
YARN是體現Hadoop平台概念的重要組件有了它大數據生態體系的其它軟件就能在hadoop上運行了,這樣就能更好的利用HDFS大存儲的優勢和節省更多的資源比如我們就不用再單獨建一個spark的集群了,讓它直接跑在現有的hadoop yarn上面就可以了。
其實把Hadoop的這些組件學明白你就能做大數據的處理了,只不過你現在還可能對"大數據"到底有多大還沒有個太清楚的概念,聽我的別糾結這個。等以后你工作了就會有很多場景遇到幾十T/幾百T大規模的數據,到時候你就不會覺得數據大真好,越大越有你頭疼的。當然別怕處理這么大規模的數據,因為這是你的價值所在,讓那些個搞Javaee的php的html5的和DBA的羡慕去吧。
4、Zookeeper
這是個萬金油,安裝Hadoop的HA的時候就會用到它,以后的Hbase也會用到它。它一般用來存放一些相互協作的信息,這些信息比較小一般不會超過1M,都是使用它的軟件對它有依賴,對於我們個人來講只需要把它安裝正確,讓它正常的run起來就可以了。
5、Mysql
小數據的處理工具mysql數據庫,因為一會裝hive的時候要用到,mysql需要掌握到什么層度那?你能在Linux上把它安裝好,運行起來,會配置簡單的權限,修改root的密碼,創建數據庫。這里主要的是學習SQL的語法,因為hive的語法和這個非常相似。
6、Sqoop
這個是用於把Mysql里的數據導入到Hadoop里的。當然你也可以不用這個,直接把Mysql數據表導出成文件再放到HDFS上也是一樣的,當然生產環境中使用要注意Mysql的壓力。
7、Hive
這個東西對於會SQL語法的來說就是神器,它能讓你處理大數據變的很簡單,不會再費勁的編寫MapReduce程序。有的人說Pig那?它和Pig差不多掌握一個就可以了。
8、Oozie
既然學會Hive了,我相信你一定需要這個東西,它可以幫你管理你的Hive或者MapReduce、Spark腳本,還能檢查你的程序是否執行正確,出錯了給你發報警並能幫你重試程序,最重要的是還能幫你配置任務的依賴關系。我相信你一定會喜歡上它的,不然你看着那一大堆腳本,和密密麻麻的crond是不是有種想屎的感覺。
9、Hbase
這是Hadoop生態體系中的NOSQL數據庫,他的數據是按照key和value的形式存儲的並且key是唯一的,所以它能用來做數據的排重,它與MYSQL相比能存儲的數據量大很多。所以他常被用於大數據處理完成之后的存儲目的地。
10、Kafka
這是個比較好用的隊列工具,隊列是干嗎的?排隊買票你知道不?數據多了同樣也需要排隊處理,這樣與你協作的其它同學不會叫起來,你干嗎給我這么多的數據(比如好幾百G的文件)我怎么處理得過來,你別怪他因為他不是搞大數據的,你可以跟他講我把數據放在隊列里你使用的時候一個個拿,這樣他就不在抱怨了馬上灰流流的去優化他的程序去了。
因為處理不過來就是他的事情。而不是你給的問題。當然我們也可以利用這個工具來做線上實時數據的入庫或入HDFS,這時你可以與一個叫Flume的工具配合使用,它是專門用來提供對數據進行簡單處理,並寫到各種數據接受方(比如Kafka)的。
11、Spark
它是用來彌補基於MapReduce處理數據速度上的缺點,它的特點是把數據裝載到內存中計算而不是去讀慢的要死進化還特別慢的硬盤。特別適合做迭代運算,所以算法流們特別稀飯它。它是用scala編寫的。Java語言或者Scala都可以操作它,因為它們都是用JVM的。