{eval=Array;=+count(Array);}
雖然不一定需要java 語言基礎,但是選擇java 語言是一條比較好的捷徑。
首先,大數(shù)據(jù)的很多組件都是java 語言寫的,想要加深學習,就必須去啃源碼,要啃源碼,那java 語言就近水樓臺先得月了。
其次,大多數(shù)做大數(shù)據(jù)的公司都是招聘java 開發(fā)人員的,這樣就業(yè)方面,就比較機會多一些。
當然,除了java 語言,python 語言,shell 腳本語言,都是需要掌握的,能為工作帶來不少便捷。
最后,要做好大數(shù)據(jù),數(shù)學邏輯思維很重要,可以著重培養(yǎng)一下
最后附上一張招聘信息
大數(shù)據(jù)是指無法在一定時間內(nèi)用常規(guī)軟件工具對其內(nèi)容進行抓取、管理和處理的數(shù)據(jù)集合。大數(shù)據(jù)技術(shù)是指從各種各樣類型的數(shù)據(jù)中,快速獲得有價值信息的能力。所以不必學java 。大數(shù)據(jù)完全始于數(shù)據(jù)存儲,也也就是說始于大數(shù)據(jù)框架Hadoop。
一、學習大數(shù)據(jù)需要的基礎
javaSE,EE(SSM)
90%的大數(shù)據(jù)框架都是java寫的。
如:MongoDB--最受歡迎的,跨平臺的,面向文檔的數(shù)據(jù)庫。
Hadoop--用Java編寫的開源軟件框架,用于分布式存儲,并對非常大的數(shù)據(jù)集進行分布式處理。
Spark --Apache Software Foundation中最活躍的項目,是一個開源集群計算框架。
Hbase--開放源代碼,非關(guān)系型,分布式數(shù)據(jù)庫,采用Google的BigTable建模,用Java編寫,并在HDFS上運行。
MySQL(必須需要掌握的)
SQLon Hadoop又分:
batch SQL(Hive):一般用于復雜的 ETL 處理,數(shù)據(jù)挖掘,高級分析。
interactive SQL:交互式 SQL 查詢,通常在同一個表上反復的執(zhí)行不同的查詢
operation SQL:通常是單點查詢,延時要求小于 1 秒,該類系統(tǒng)主要是HBase。
Linux
Linux(一種操作系統(tǒng),程序員必須掌握的,我的博客里有我對Linux的介紹)
大數(shù)據(jù)的框架安裝在Linux操作系統(tǒng)上
二、需要學什么
第一方面:大數(shù)據(jù)離線分析
一般處理T+1數(shù)據(jù):
Hadoop:(common、HDFS、MapReduce、YARN)重點中的重點。
Hadoop的框架最核心的設計就是:HDFS 和 MapReduce,
Hadoop :主要是的環(huán)境搭建
Hadoop的思想:處理數(shù)據(jù)的思想。
Hadoop用Java編寫的開源軟件框架,用于分布式存儲,并對非常大的數(shù)據(jù)集進行分布式處理,
用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,
充分利用集群進行高速運算和存儲。
Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。
HDFS為海量的數(shù)據(jù)提供了存儲,MapReduce則為海量的數(shù)據(jù)提供了計算。
HDFS:
HDFS 的架構(gòu)是基于一組特定的節(jié)點構(gòu)建的,這是由它自身的特點決定的。
這些節(jié)點包括NameNode(僅一個),它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務;
DataNode,它為 HDFS 提供存儲塊。
由于僅存在一個 NameNode,因此這是 HDFS 的一個缺點(單點失?。?。
存儲在 HDFS 中的文件被分成塊,然后將這些塊復制到多個計算機中(DataNode)。
這與傳統(tǒng)的 RAID 架構(gòu)大不相同。塊的大?。ㄍǔ?64MB)和復制的塊數(shù)量在創(chuàng)建文件時由客戶機決定 NameNode 可以控制所有文件操作。
NameNode 是一個通常在HDFS實例中的多帶帶機器上運行的軟件,
它負責管理文件系統(tǒng)名稱空間和控制外部客戶機的訪問。
NameNode 決定是否將文件映射到 DataNode 上的復制塊上。
對于最常見的 3 個復制塊,第一個復制塊存儲在同一機架的不同節(jié)點上,最后一個復制塊存儲在不同機架的某個節(jié)點上。
DataNode:
DataNode 也是一個通常在HDFS實例中的多帶帶機器上運行的軟件。
Hadoop 集群包含一個 NameNode 和大量 DataNode。
DataNode 通常以機架的形式組織,機架通過一個交換機將所有系統(tǒng)連接起來。
Hadoop 的一個假設是:機架內(nèi)部節(jié)點之間的傳輸速度快于機架間節(jié)點的傳輸速度
MapReduce:
MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算
概念"Map(映射)"和"Reduce(歸約)"
MapReduce是面向大數(shù)據(jù)并行處理的計算模型、框架和平臺,它隱含了以下三層含義:
1)MapReduce是一個基于集群的高性能并行計算平臺(Cluster Infrastructure)。
2)MapReduce是一個并行計算與運行軟件框架(Software Framework)
3)MapReduce是一個并行程序設計模型與方法(Programming Model & Methodology)。
Hive(MPP架構(gòu)):
大數(shù)據(jù)數(shù)據(jù)倉庫
通過寫SQL對數(shù)據(jù)進行操作,類似于mysql數(shù)據(jù)庫中的sql
擴展:
MPP架構(gòu):MPP 架構(gòu)的優(yōu)點是查詢速度快,通常在秒計甚至毫秒級以內(nèi)就可以返回查詢結(jié)果。
(但MPP 架構(gòu)不適合大規(guī)模部署)
HBase(博客中有 這個重要)
基于HDFS的NOSQL數(shù)據(jù)庫
面向列的存儲
列存儲:
列存儲的思想是將元組垂直劃分為列族集合,每一個列族獨立存儲,列族可以退化為只僅包含
一個列的平凡列族。當查詢少量列時,列存儲模型可以極大的減少磁盤IO 操作,提高查詢性能。
當查詢的列跨越多個列族時,需要將存儲在不同列族中列數(shù)據(jù)拼接成原始數(shù)據(jù),由于不同列族
存儲 在不同的 HDFS 節(jié)點上,導致大量的數(shù)據(jù)跨越網(wǎng)絡傳輸,從而降低查詢性能。
擴展前沿框架:
協(xié)作框架:
sqoop(橋梁:HDFS 《==》RDBMS)
Sqoop(發(fā)音:skup)是一款開源的工具,一個用來將Hadoop和關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)相互轉(zhuǎn)移的工具,
主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進行數(shù)據(jù)的傳遞,
可以將一個關(guān)系型數(shù)據(jù)庫(例如 :MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導進到Hadoop的HDFS
中,也可以將HDFS的數(shù)據(jù)導進到關(guān)系型數(shù)據(jù)庫中。
Sqoop介紹:
Sqoop項目開始于2009年,最早是作為Hadoop的一個第三方模塊存在,后來為了讓使用者能夠快速部署,
也為了讓開發(fā)人員能夠更快速的迭代開發(fā),Sqoop獨立成為一個Apache項目。
RDBMS:
RDBMS即關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System),
是將數(shù)據(jù)組織為相關(guān)的行和列的系統(tǒng)而管理關(guān)系數(shù)據(jù)庫的計算機軟件就是關(guān)系數(shù)據(jù)庫管理系統(tǒng),
常用的數(shù)據(jù)庫軟件有Oracle、SQL server等。
RDBMS 是SQL 的基礎,同樣也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)的基礎
RDBMS 中的數(shù)據(jù)存儲在被稱為表(tables)的數(shù)據(jù)庫對象中。
表是相關(guān)的數(shù)據(jù)項的集合,它由列和行組成。
RDBMS的特點:
1.數(shù)據(jù)以表格的形式出現(xiàn)
2.每行為各種記錄名稱
3.每列為記錄名稱所對應的數(shù)據(jù)域
4.許多的行和列組成一張表單
5.若干的表單組成database
flume:收集日志文件中信息
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),
Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,
Flume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力
調(diào)度框架anzkaban,了解
crontab(Linux自帶)
crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設置周期性被執(zhí)行的指令。
該命令從標準輸入設備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行。
Kylin(中國自主知識產(chǎn)權(quán)操作系統(tǒng))
Kylin操作系統(tǒng)是國家高技術(shù)研究發(fā)展計劃(863計劃)的重大成果之一,
是以國防科技大學為主導,與中軟、聯(lián)想等單位聯(lián)合設計和開發(fā)的具有完全自主版權(quán),
可支持多種微處理器和多種計算機體系結(jié)構(gòu),具有高性能、高可用性和高安全性,
并與Linux應用二進制兼容的國產(chǎn)中文服務器操作系統(tǒng)。
Impala:
Impala是Cloudera公司主導開發(fā)的新型查詢系統(tǒng),它提供SQL語義,
能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。
已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎,
仍然是一個批處理過程,難以滿足查詢的交互性。重要的是它查詢的很快
ElasticSearch(ES)
ElasticSearch是一個基于Lucene的搜索服務器。
它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當前流行的企業(yè)級搜索引擎。
ES概念:
cluster
代表一個集群,集群中有多個節(jié)點,其中有一個為主節(jié)點,這個主節(jié)點是可以通過選舉產(chǎn)生的,
主從節(jié)點是對于集群內(nèi)部來說的。
es的一個概念就是去中心化,字面上理解就是無中心節(jié)點,這是對于集群外部來說的,
因為從外部來看es集群,在邏輯上是個整體,你與任何一個節(jié)點的通信和與整個es集群通信是等價的。
了解:
Shards
Replicas
Recovery
River
Gateway
Discovery.zen
Transport
這個目前來說還是需要有的,但是不需要太深。以下答復也許可以幫助到您。
學習大數(shù)據(jù)是需要有java,python和R語言的基礎。
1) Java學習到什么樣的程度才可以學習大數(shù)據(jù)呢?
java需要學會javaSE即可。javaweb,javaee對于大數(shù)據(jù)用不到。學會了javase就可以看懂hadoop框架。
2) python是最容易學習的,難易程度:python java Scala 。
python不是比java更直觀好理解么,因為會了Python 還是要學習java的,你學會了java,再來學習python會很簡單的,一周的時間就可以學會python。
3) R語言也可以學習,但是不推薦,因為java用的人最多,大數(shù)據(jù)的第一個框架Hadoop,底層全是Java寫的。就算學會了R還是看不懂hadoop。
java在大數(shù)據(jù)中的作用是構(gòu)成大數(shù)據(jù)的語言,大數(shù)據(jù)的第一個框架Hadoop以及其他大數(shù)據(jù)技術(shù)框架,底層語言全是Java寫的,所以推薦首選學習java
再給你們舉例說明下它們的分工和作用,java注重業(yè)務,大數(shù)據(jù)注重數(shù)據(jù),前端是臉(頁面顯示),java是胳膊(業(yè)務),大數(shù)據(jù)是直男大腦,人工智能,深度學習是有情商的大腦。
給你分享下大數(shù)據(jù)整體技術(shù)體系以及大數(shù)據(jù)相關(guān)熱門就業(yè)崗位
當然啊。
校招都需要扎實的java基礎,還需要有參加過javaEE項目,有開發(fā)經(jīng)驗的。
如果只會一點JavaSE,可能簡歷都過不了。
這還只是校園招聘的要求,要是社招對JAVA的要求就更高了,其它企業(yè),大家可以自行去招聘網(wǎng)站查看,基本都如此。
雖然大數(shù)據(jù)開發(fā)崗位隨著大數(shù)據(jù)產(chǎn)業(yè)的發(fā)展,需求在增加,但是學習大數(shù)據(jù)開發(fā)的人也在增加。2019年,開設大數(shù)據(jù)專業(yè)的本科高校就達到了283所,可以預見,幾年之后,大數(shù)據(jù)開發(fā)崗位競爭將會非常激烈,隨之,企業(yè)對大數(shù)據(jù)開發(fā)崗位的要求也會增加。
首先無論如何肯定要有計算機基礎百,當然實在基礎很薄弱也不是不行,不影響入行但是影響你的上限。
其次很重度要的是對數(shù)據(jù)庫要有一定的理解,不過如果是零基礎開始學的話,也問題知不大。
然后就是語言基礎,Java對大數(shù)據(jù)開發(fā)很重要,Python對數(shù)據(jù)分析重要。有語言基礎肯定方便你學習,道但實在沒有也沒關(guān)系。
大數(shù)據(jù)太大了,里面又要分很多方向和技術(shù)要求,不過Java是基礎開發(fā)語言,很多時候都是會用到的,所以必須要掌握好。
大數(shù)據(jù)很多組件都是用java開發(fā)的,你不懂java的話,看不懂源碼,更沒辦法進行開發(fā)了,但是如果你做的只是hbase,hive這些可以不用懂太深,會SQL就行了,如果要往更深層次學習,建議還是要學習java
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答