什么是NoSQL數(shù)據(jù)庫?從名稱“非SQL”或“非關(guān)系型”衍生而來,這些數(shù)據(jù)庫不使用類似SQL的查詢語言,通常稱為結(jié)構(gòu)化存儲(chǔ)。這些數(shù)據(jù)庫自1960年就已經(jīng)存在,但是直到現(xiàn)在一些大公司(例如Google和Facebook)開始使用它們時(shí),這些數(shù)據(jù)庫才流行起來。該數(shù)據(jù)庫最明顯的優(yōu)勢(shì)是擺脫了一組固定的列、連接和類似SQL的查詢語言的限制。有時(shí),NoSQL這個(gè)名稱也可能表示“不僅僅SQL”,來確保它們可能支持SQL。 NoSQL數(shù)據(jù)庫使用諸如鍵值、寬列、圖形或文檔之類的數(shù)據(jù)結(jié)構(gòu),并且可以如JSON之類的不同格式存儲(chǔ)。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),閔行企業(yè)網(wǎng)站建設(shè),閔行品牌網(wǎng)站建設(shè),網(wǎng)站定制,閔行網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,閔行網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Web1.0的時(shí)代,數(shù)據(jù)訪問量很有限,用一夫當(dāng)關(guān)的高性能的單點(diǎn)服務(wù)器可以解決大部分問題。
隨著Web2.0的時(shí)代的到來,用戶訪問量大幅度提升,同時(shí)產(chǎn)生了大量的用戶數(shù)據(jù)。加上后來的智能移動(dòng)設(shè)備的普及,所有的互聯(lián)網(wǎng)平臺(tái)都面臨了巨大的性能挑戰(zhàn)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫。
NoSQL 不依賴業(yè)務(wù)邏輯方式存儲(chǔ),而以簡單的key-value模式存儲(chǔ)。因此大大的增加了數(shù)據(jù)庫的擴(kuò)展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫 列式數(shù)據(jù)庫 Hbase Hbase
HBase是Hadoop項(xiàng)目中的數(shù)據(jù)庫。它用于需要對(duì)大量的數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時(shí)的讀寫操作的場(chǎng)景中。
HBase的目標(biāo)就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計(jì)算機(jī)處理超過10億行數(shù)據(jù),還可處理有數(shù)百萬列元素的數(shù)據(jù)表。
Cassandra Cassandra
Apache Cassandra是一款免費(fèi)的開源NoSQL數(shù)據(jù)庫,其設(shè)計(jì)目的在于管理由大量商用服務(wù)器構(gòu)建起來的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達(dá)到PB級(jí)別)。在眾多顯著特性當(dāng)中,Cassandra最為卓越的長處是對(duì)寫入及讀取操作進(jìn)行規(guī)模調(diào)整,而且其不強(qiáng)調(diào)主集群的設(shè)計(jì)思路能夠以相對(duì)直觀的方式簡化各集群的創(chuàng)建與擴(kuò)展流程。
主要應(yīng)用:社會(huì)關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)
Java :只要了解一些基礎(chǔ)即可,做大數(shù)據(jù)不需要很深的Java 技術(shù),學(xué)java SE 就相當(dāng)于有學(xué)習(xí)大數(shù)據(jù)?;A(chǔ)
Linux:因?yàn)榇髷?shù)據(jù)相關(guān)軟件都是在Linux上運(yùn)行的,所以Linux要學(xué)習(xí)的扎實(shí)一些,學(xué)好Linux對(duì)你快速掌握大數(shù)據(jù)相關(guān)技術(shù)會(huì)有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數(shù)據(jù)軟件的運(yùn)行環(huán)境和網(wǎng)絡(luò)環(huán)境配置,能少踩很多坑,學(xué)會(huì)shell就能看懂腳本這樣能更容易理解和配置大數(shù)據(jù)集群。還能讓你對(duì)以后新出的大數(shù)據(jù)技術(shù)學(xué)習(xí)起來更快。
好說完基礎(chǔ)了,再說說還需要學(xué)習(xí)哪些大數(shù)據(jù)技術(shù),可以按我寫的順序?qū)W下去。
Hadoop:這是現(xiàn)在流行的大數(shù)據(jù)處理平臺(tái)幾乎已經(jīng)成為大數(shù)據(jù)的代名詞,所以這個(gè)是必學(xué)的。Hadoop里面包括幾個(gè)組件HDFS、MapReduce和YARN,HDFS是存儲(chǔ)數(shù)據(jù)的地方就像我們電腦的硬盤一樣文件都存儲(chǔ)在這個(gè)上面,MapReduce是對(duì)數(shù)據(jù)進(jìn)行處理計(jì)算的,它有個(gè)特點(diǎn)就是不管多大的數(shù)據(jù)只要給它時(shí)間它就能把數(shù)據(jù)跑完,但是時(shí)間可能不是很快所以它叫數(shù)據(jù)的批處理。
記住學(xué)到這里可以作為你學(xué)大數(shù)據(jù)的一個(gè)節(jié)點(diǎn)。
Zookeeper:這是個(gè)萬金油,安裝Hadoop的HA的時(shí)候就會(huì)用到它,以后的Hbase也會(huì)用到它。它一般用來存放一些相互協(xié)作的信息,這些信息比較小一般不會(huì)超過1M,都是使用它的軟件對(duì)它有依賴,對(duì)于我們個(gè)人來講只需要把它安裝正確,讓它正常的run起來就可以了。
Mysql:我們學(xué)習(xí)完大數(shù)據(jù)的處理了,接下來學(xué)習(xí)學(xué)習(xí)小數(shù)據(jù)的處理工具mysql數(shù)據(jù)庫,因?yàn)橐粫?huì)裝hive的時(shí)候要用到,mysql需要掌握到什么層度那?你能在Linux上把它安裝好,運(yùn)行起來,會(huì)配置簡單的權(quán)限,修改root的密碼,創(chuàng)建數(shù)據(jù)庫。這里主要的是學(xué)習(xí)SQL的語法,因?yàn)閔ive的語法和這個(gè)非常相似。
Sqoop:這個(gè)是用于把Mysql里的數(shù)據(jù)導(dǎo)入到Hadoop里的。當(dāng)然你也可以不用這個(gè),直接把Mysql數(shù)據(jù)表導(dǎo)出成文件再放到HDFS上也是一樣的,當(dāng)然生產(chǎn)環(huán)境中使用要注意Mysql的壓力。
Hive:這個(gè)東西對(duì)于會(huì)SQL語法的來說就是神器,它能讓你處理大數(shù)據(jù)變的很簡單,不會(huì)再費(fèi)勁的編寫MapReduce程序。有的人說Pig那?它和Pig差不多掌握一個(gè)就可以了。
Oozie:既然學(xué)會(huì)Hive了,我相信你一定需要這個(gè)東西,它可以幫你管理你的Hive或者M(jìn)apReduce、Spark腳本,還能檢查你的程序是否執(zhí)行正確,出錯(cuò)了給你發(fā)報(bào)警并能幫你重試程序,最重要的是還能幫你配置任務(wù)的依賴關(guān)系。我相信你一定會(huì)喜歡上它的,不然你看著那一大堆腳本,和密密麻麻的crond是不是有種想屎的感覺。
Hbase:這是Hadoop生態(tài)體系中的NOSQL數(shù)據(jù)庫,他的數(shù)據(jù)是按照key和value的形式存儲(chǔ)的并且key是唯一的,所以它能用來做數(shù)據(jù)的排重,它與MYSQL相比能存儲(chǔ)的數(shù)據(jù)量大很多。所以他常被用于大數(shù)據(jù)處理完成之后的存儲(chǔ)目的地。
Kafka:這是個(gè)比較好用的隊(duì)列工具,隊(duì)列是干嗎的?排隊(duì)買票你知道不?數(shù)據(jù)多了同樣也需要排隊(duì)處理,這樣與你協(xié)作的其它同學(xué)不會(huì)叫起來,你干嗎給我這么多的數(shù)據(jù)(比如好幾百G的文件)我怎么處理得過來,你別怪他因?yàn)樗皇歉愦髷?shù)據(jù)的,你可以跟他講我把數(shù)據(jù)放在隊(duì)列里你使用的時(shí)候一個(gè)個(gè)拿,這樣他就不在抱怨了馬上灰流流的去優(yōu)化他的程序去了,因?yàn)樘幚聿贿^來就是他的事情。而不是你給的問題。當(dāng)然我們也可以利用這個(gè)工具來做線上實(shí)時(shí)數(shù)據(jù)的入庫或入HDFS,這時(shí)你可以與一個(gè)叫Flume的工具配合使用,它是專門用來提供對(duì)數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(比如Kafka)的。
Spark:它是用來彌補(bǔ)基于MapReduce處理數(shù)據(jù)速度上的缺點(diǎn),它的特點(diǎn)是把數(shù)據(jù)裝載到內(nèi)存中計(jì)算而不是去讀慢的要死進(jìn)化還特別慢的硬盤。特別適合做迭代運(yùn)算,所以算法流們特別稀飯它。它是用scala編寫的。Java語言或者Scala都可以操作它,因?yàn)樗鼈兌际怯肑VM的。
數(shù)據(jù)處理與分析分為五步:
第一步:確定客戶的數(shù)據(jù)需求
比較典型的場(chǎng)景是我們需要針對(duì)企業(yè)的數(shù)據(jù)進(jìn)行分析,比如公司通常會(huì)有銷售數(shù)據(jù)、用戶數(shù)據(jù)、運(yùn)營數(shù)據(jù)、產(chǎn)品生產(chǎn)數(shù)據(jù)……需要從這些數(shù)據(jù)里獲得哪些有用的信息,對(duì)策略的制定進(jìn)行指導(dǎo)呢?又比如需要做的是一份市場(chǎng)調(diào)研或者行業(yè)分析,那么需要知道獲得關(guān)于這個(gè)行業(yè)的哪些信息。
第二步:根據(jù)客戶需求進(jìn)行數(shù)據(jù)采集
采集來自網(wǎng)絡(luò)爬蟲、結(jié)構(gòu)化數(shù)據(jù)、本地?cái)?shù)據(jù)、物聯(lián)網(wǎng)設(shè)備、人工錄入五個(gè)數(shù)據(jù)源的數(shù)據(jù),為客戶提供定制化數(shù)據(jù)采集。目的是根據(jù)客戶的需求,定制數(shù)據(jù)采集,構(gòu)建單一數(shù)據(jù)源。
第三步:數(shù)據(jù)預(yù)處理
現(xiàn)實(shí)世界中數(shù)據(jù)大體上都是不完整,不一致的臟數(shù)據(jù),無法直接進(jìn)行數(shù)據(jù)分析,或分析結(jié)果差強(qiáng)人意。數(shù)據(jù)預(yù)處理有多種方法:數(shù)據(jù)清理,數(shù)據(jù)集成,數(shù)據(jù)變換,數(shù)據(jù)歸約等。把這些影響分析的數(shù)據(jù)處理好,才能獲得更加精確地分析結(jié)果。
第四步:數(shù)據(jù)分析與建模
數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計(jì)分析方法對(duì)收集來的大量數(shù)據(jù)進(jìn)行分析,提取有用信息和形成結(jié)論而對(duì)數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。這一過程也是質(zhì)量管理體系的支持過程。在實(shí)用中,數(shù)據(jù)分析可幫助人們作出判斷,以便采取適當(dāng)行動(dòng)。
數(shù)據(jù)模型是對(duì)信息系統(tǒng)中客觀事物及其聯(lián)系的數(shù)據(jù)描述,它是復(fù)雜的數(shù)據(jù)關(guān)系之間的一個(gè)整體邏輯結(jié)構(gòu)圖。數(shù)據(jù)模型不但提供了整個(gè)組織藉以收集數(shù)據(jù)的基礎(chǔ),它還與組織中其他模型一起,精確恰當(dāng)?shù)赜涗洏I(yè)務(wù)需求,并支持信息系統(tǒng)不斷地發(fā)展和完善,以滿足不斷變化的業(yè)務(wù)需求。
第五步:數(shù)據(jù)可視化及數(shù)據(jù)報(bào)告的撰寫
分析結(jié)果最直接的結(jié)果是統(tǒng)計(jì)量的描述和統(tǒng)計(jì)量的展示。數(shù)據(jù)分析報(bào)告不僅是分析結(jié)果的直接呈現(xiàn),還是對(duì)相關(guān)情況的一個(gè)全面的認(rèn)識(shí)。
clickhouse不可以替代hadoop。
Hadoop生態(tài)圈的技術(shù)繁多,HDFS一直用來保存底層數(shù)據(jù),地位牢固。
Hbase作為一款Nosql也是Hadoop生態(tài)圈的核心組件,它海量的存儲(chǔ)能力,優(yōu)秀的隨機(jī)讀寫能力,能夠處理一些HDFS不足的地方。
Apache Kudu是Cloudera Manager公司16年發(fā)布的新型分布式存儲(chǔ)系統(tǒng),結(jié)合CDH和Impala使用可以同時(shí)解決隨機(jī)讀寫和sql化數(shù)據(jù)分析的問題。分別彌補(bǔ)HDFS靜態(tài)存儲(chǔ)和Hbase Nosql的不足。
Clickhouse是一個(gè)用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫管理系統(tǒng)(DBMS),能夠使用SQL查詢實(shí)時(shí)生成分析數(shù)據(jù)報(bào)告。它同樣擁有優(yōu)秀的數(shù)據(jù)存儲(chǔ)能力。
數(shù)據(jù)庫日志記錄是高可用的數(shù)據(jù)庫解決方案設(shè)計(jì)的重要部分,它可以從故障中恢復(fù)過來,同步主數(shù)據(jù)庫和輔助數(shù)據(jù)庫都需要用到數(shù)據(jù)庫日志。
所有數(shù)據(jù)庫都有相關(guān)的日志,這些日志保存了有關(guān)數(shù)據(jù)庫更改的記錄。
如果需要將數(shù)據(jù)庫復(fù)原到上一完整、脫機(jī)備份之前的一個(gè)點(diǎn),那么需要日志才能將數(shù)據(jù)前滾至故障點(diǎn)。