99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀大數(shù)據(jù)和Hadoop生態(tài)圈,Hadoop發(fā)行版和基于Hadoop的企業(yè)級應(yīng)用2
大數(shù)據(jù)和Hadoop生態(tài)圈,Hadoop發(fā)行版和基于Hadoop的企業(yè)級應(yīng)用2
2015-04-02
收藏

大數(shù)據(jù)和Hadoop生態(tài)圈,Hadoop發(fā)行版和基于Hadoop的企業(yè)級應(yīng)用2


Zookeeper ——用于Hadoop的分布式協(xié)調(diào)服務(wù)。Hadoop的許多組件依賴于Zookeeper,它運(yùn)行在計(jì)算機(jī)集群上面,用于管理Hadoop操作。

Oozie——Oozie是一個(gè)可擴(kuò)展的工作體系,集成于Hadoop的堆棧,用于協(xié)調(diào)多個(gè)MapReduce作業(yè)的執(zhí)行。它能夠管理一個(gè)復(fù)雜的系統(tǒng),基于外部事件來執(zhí)行,外部事件包括數(shù)據(jù)的定時(shí)和數(shù)據(jù)的出現(xiàn)。

Pig——它是MapReduce編程的復(fù)雜性的抽象。Pig平臺包括運(yùn)行環(huán)境和用于分析Hadoop數(shù)據(jù)集的腳本語言(Pig Latin)。其編譯器將Pig Latin翻譯成MapReduce程序序列。

Hive ——Hive類似于SQL高級語言,用于運(yùn)行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發(fā)人員也能編寫數(shù)據(jù)查詢語句,然后這些語句被翻譯為Hadoop上面的MapReduce任務(wù)。像Pig一樣,Hive作為一個(gè)抽象層工具,吸引了很多熟悉SQL而不是Java編程的數(shù)據(jù)分析師。

Hadoop的生態(tài)圈還包括以下幾個(gè)框架,用來與其它企業(yè)融合:

Sqoop是一個(gè)連接工具,用于在關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫Hadoop之間轉(zhuǎn)移數(shù)據(jù)。Sqoop利用數(shù)據(jù)庫技術(shù)描述架構(gòu),進(jìn)行數(shù)據(jù)的導(dǎo)入/導(dǎo)出;利用MapReduce實(shí)現(xiàn)并行化運(yùn)行和容錯(cuò)技術(shù)。

Flume提供了分布式、可靠、高效的服務(wù),用于收集、匯總大數(shù)據(jù),并將單臺計(jì)算機(jī)的大量數(shù)據(jù)轉(zhuǎn)移到HDFS。它基于一個(gè)簡單而靈活的架構(gòu),并提供了數(shù)據(jù)流的流。它利用簡單的可擴(kuò)展的數(shù)據(jù)模型,將企業(yè)中多臺計(jì)算機(jī)上的數(shù)據(jù)轉(zhuǎn)移到Hadoop。

除了在圖1-1所示的核心部件外,Hadoop生態(tài)圈正在不斷增長,以提供更新功能和組件,如以下內(nèi)容:

Whirr——Whirr是一組用來運(yùn)行云服務(wù)的Java類庫,使用戶能夠輕松地將Hadoop集群運(yùn)行于Amazon EC2、Rackspace等虛擬云計(jì)算平臺。

Mahout——Mahout是一個(gè)機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘庫,它提供的MapReduce包含很多實(shí)現(xiàn),包括聚類算法、回歸測試、統(tǒng)計(jì)建模。通過使用 Apache Hadoop 庫,可以將Mahout有效地?cái)U(kuò)展到云中。

BigTop —— BigTop作為Hadoop子項(xiàng)目和相關(guān)組件,是一個(gè)用于打包和互用性測試的程序和框架。

Ambari——?Ambar通過為配置、管理和監(jiān)控Hadoop集群提供支持,簡化了Hadoop的管理。

Hadoop家族成員正在逐步增加。在本書中,主要涉及到了三個(gè)新的Apache Hadoop孵化項(xiàng)目。

孵化項(xiàng)目演變到Apach項(xiàng)目的過程

下面將會簡要介紹Apache基金會的運(yùn)作方式,以及Apache各種項(xiàng)目及其彼此之間的聯(lián)系。Apache的個(gè)人會員共同治理整個(gè)組織,Apache提供項(xiàng)目的創(chuàng)建、成熟和回收。

新的項(xiàng)目開始于“孵化器”。建立Apache孵化器,是為了幫助新項(xiàng)目加入Apache。Apache提供管理和檢驗(yàn),經(jīng)過篩選后,再建立新的項(xiàng)目或者子項(xiàng)目。在創(chuàng)建孵化項(xiàng)目后,Apache會評估項(xiàng)目的成熟度,并負(fù)責(zé)將孵化器中的項(xiàng)目“畢業(yè)”到Apache項(xiàng)目或子項(xiàng)目。孵化器也會由于各種原因而終止一些項(xiàng)目。

要查看孵化器中項(xiàng)目(當(dāng)前的、孵化成功的、暫時(shí)停止的和回收的)的完整列表,可以通過此網(wǎng)址:http://incubator.apache.org/projects/index.html。

當(dāng)今大多數(shù)的Hadoop方面的書籍,要么專注于Hadoop生態(tài)圈中某個(gè)獨(dú)立組件的描述,要么介紹如何使用Hadoop業(yè)務(wù)分析工具(如Pig和Hive)。盡管這些方面也很重要,但是這些書籍通常沒有進(jìn)行深入的描述,并不能幫助架構(gòu)師建立基于Hadoop的企業(yè)級應(yīng)用或復(fù)雜應(yīng)用。

1.4 Hadoop發(fā)行版本

雖然Hadoop是開源的Apache(和現(xiàn)在GitHub)項(xiàng)目,但是在Hadoop行業(yè),仍然出現(xiàn)了大量的新興公司,以幫助人們更方便地使用Hadoop為目標(biāo)。這些企業(yè)大多將Hadoop發(fā)行版進(jìn)行打包、改進(jìn),以確保所有的軟件一起工作,并提供技術(shù)支持?,F(xiàn)在,Apache自己也在開發(fā)更多的工具來簡化Hadoop的使用,并擴(kuò)展其功能。這些工具是專有的,并有所差異。有的工具成為了Apache Hadoop家族中新項(xiàng)目的基礎(chǔ)。其中,有些是經(jīng)過Apache2許可的開源GitHub項(xiàng)目。盡管所有這些公司都基于Apache Hadoop發(fā)行版,但是他們都與Hadoop的愿景有了細(xì)微的不同——應(yīng)該選取哪個(gè)方向,怎樣完成它。

這些公司之間最大的區(qū)別是:Apache源代碼的使用。除了MapR公司之外,都認(rèn)為Hadoop應(yīng)該由Apache項(xiàng)目的代碼定義。相反,MapR認(rèn)為Apache的代碼只是實(shí)施參考,可以基于Apache提供的API來實(shí)現(xiàn)自己的需求。這種方法使得MapR做出了很大的創(chuàng)新,特別是在HDFS和HBase方面,MapR讓這兩個(gè)基本Hadoop的存儲機(jī)制更加可靠、更加高性能。MapR還推出了高速網(wǎng)絡(luò)文件系統(tǒng)(NFS),可以訪問HDFS,從而大大簡化了一些企業(yè)級應(yīng)用的集成。

有兩個(gè)關(guān)注度較高的Hadoop發(fā)行版,分別由亞馬遜和微軟發(fā)布。兩者都提供Hadoop的預(yù)安裝版本,運(yùn)行于相應(yīng)的云服務(wù)平臺(Amazon or Azure),提供PaaS服務(wù)。它們都提供了擴(kuò)展服務(wù),允許開發(fā)人員不僅能夠利用Hadoop的本地HDFS,也可以通過HDFS映射利用微軟和雅虎的數(shù)據(jù)存儲機(jī)制(Amazon的S3,和Azure的Windows Azure存儲機(jī)制)。亞馬遜還提供了,在S3上面保存和恢復(fù)HBase內(nèi)容的功能。

表1-1展示了主要的Hadoop發(fā)行版的主要特點(diǎn)。

表1: 不同的Hadoop供應(yīng)商

供應(yīng)商

HADOOP特性

Cloudera CDH,個(gè)人版和企業(yè)版

CDH基于Hadoop2,(撰寫本文時(shí)為4.1.2版本)包括HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其他開源工具(包括實(shí)時(shí)查詢引擎Impala)。Cloudera的個(gè)人免費(fèi)版包括所有CDH工具,和支持高達(dá)50個(gè)節(jié)點(diǎn)的集群管理器。Cloudera企業(yè)版提供了更復(fù)雜的管理器,支持無限數(shù)量的集群節(jié)點(diǎn),能夠主動監(jiān)控,并額外提供了數(shù)據(jù)分析工具。

Hortonworks數(shù)據(jù)平臺

發(fā)行版(Alpha 2.0版)基于Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,實(shí)時(shí)版Hive(Stinger)和其他開源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驅(qū)動和針對大數(shù)據(jù)的Talend Open Studio。

MapR

基于Hadoop1,發(fā)行版(撰寫本文時(shí)為版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他開源工具。它還包括直接NFS訪問、快照、“高實(shí)用性”鏡像、專有的HBase實(shí)現(xiàn),與Apache完全兼容的API和一個(gè)MapR管理控制臺。

IBM InfoSphere BigInsights

基于Hadoop1,提供了兩個(gè)版本。基本版包括HDFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他一些開源工具。并提供IBM的安裝程序和數(shù)據(jù)訪問工具的基本版本。企業(yè)版增加了復(fù)雜的作業(yè)管理工具、集成了數(shù)據(jù)源的數(shù)據(jù)訪問層和BigSheets(類似電子表格的界面,用來操作集群中的數(shù)據(jù))。

GreenPlum的Pivotal HD

在撰寫本文時(shí),最新版基于Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其他開源工具。Pivotal HD企業(yè)級還增加了先進(jìn)的HAWQ數(shù)據(jù)庫服務(wù)(ADS),和豐富、成熟、并行的SQL處理工具。

亞馬遜彈性MapReduce(EMR)

在撰寫本文時(shí),最新版基于Hadoop1。亞馬遜EMR是一個(gè)web服務(wù),能夠使用戶方便且經(jīng)濟(jì)高效地處理海量的數(shù)據(jù)。它采用Hadoop框架,運(yùn)行在亞馬遜彈性計(jì)算云EC2和簡單存儲服務(wù)S3之上。包括HDFS(S3支持),HBase(專有的備份恢復(fù)),MapReduce,, Hive (Dynamo的補(bǔ)充支持), Pig, and Zookeeper.

Windows Azure的HDlnsight

HDlnsight基于Hortonworks數(shù)據(jù)平臺(Hadoop1),運(yùn)行在Azure云。它集成了微軟管理控制臺,易于部署,易于System Center的集成。通過使用Excel插件,可以整合Excel數(shù)據(jù)。通過Hive開放式數(shù)據(jù)庫連接(ODBC)驅(qū)動程序,可以集成Microsoft SQL Server分析服務(wù)(SSAS)、PowerPivot和Power View。Azure Marketplace授權(quán)客戶連接數(shù)據(jù)、智能挖掘算法以及防火墻之外的人。Windows Azure Marketplace從受信任的第三方供應(yīng)商中,提供了數(shù)百個(gè)數(shù)據(jù)集。

當(dāng)然,大量的發(fā)行版讓你疑惑“我應(yīng)該使用哪個(gè)發(fā)行版?”當(dāng)公司/部門決定采用一個(gè)具體的版本時(shí),應(yīng)該考慮以下幾點(diǎn):

技術(shù)細(xì)節(jié)——包括Hadoop的版本、組件、專有功能部件等等。

易于部署——使用工具箱來實(shí)現(xiàn)管理的部署、版本升級、打補(bǔ)丁等等。

易于維護(hù)——主要包括集群管理、多中心的支持、災(zāi)難恢復(fù)支持等等。

成本——包括針發(fā)行版的實(shí)施成本、計(jì)費(fèi)模式和許可證。

企業(yè)集成的支持——Hadoop應(yīng)用程序與企業(yè)中其他部分的集成。

版本的選擇依賴于,你打算利用Hadoop來解決哪些問題。本書中的討論與版本無關(guān),因?yàn)楣P者看中的是每個(gè)發(fā)行版提供的價(jià)值。

1.5 用Hadoop開發(fā)企業(yè)級應(yīng)用

為了滿足大數(shù)據(jù)帶來的新挑戰(zhàn),需要重新思考構(gòu)建數(shù)據(jù)分析的程序的方式。傳統(tǒng)的在數(shù)據(jù)庫中存儲數(shù)據(jù),構(gòu)建應(yīng)用程序的方法,對于大數(shù)據(jù)處理將不再有效。主要因?yàn)椋?/span>

  1. 傳統(tǒng)的應(yīng)用程序基于事務(wù)處理型數(shù)據(jù)庫,這種數(shù)據(jù)庫將不再被Hadoop支持。
  2. 隨著存儲在Hadoop上的數(shù)據(jù)量增大,實(shí)時(shí)訪問僅僅能夠訪問到集群上的一部分?jǐn)?shù)據(jù)。
  3. Hadoop的海量數(shù)據(jù)存儲功能可以存儲更多的數(shù)據(jù)集版本,不會像傳統(tǒng)方法一樣覆蓋原始數(shù)據(jù)。

因此,一個(gè)典型的基于Hadoop的企業(yè)級應(yīng)用如圖1-2所示。在這些應(yīng)用中,包括數(shù)據(jù)存儲層、數(shù)據(jù)處理層、實(shí)時(shí)訪問層和安全層。要實(shí)現(xiàn)這種體系結(jié)構(gòu),不僅需要理解Hadoop組件所涉及的API,而且需要理解他們的功能和局限性,以及每個(gè)組件在整體架構(gòu)中的作用。

如圖1-2所示,數(shù)據(jù)存儲層包括源數(shù)據(jù)和中間數(shù)據(jù)。源數(shù)據(jù)主要來自這些外部數(shù)據(jù)源,外部數(shù)據(jù)源包括企業(yè)應(yīng)用程序、外部數(shù)據(jù)庫、執(zhí)行日志和其它數(shù)據(jù)源。中間數(shù)據(jù)結(jié)果來自Hadoop的執(zhí)行過程,它們被Hadoop的實(shí)時(shí)應(yīng)用程序使用,并交付給其他應(yīng)用程序和終端用戶。

<a href='/map/hadoop/' style='color:#000;font-size:inherit;'>Hadoop</a>

圖1-2: Hadoop企業(yè)級應(yīng)用

可以使用不同的機(jī)制將源數(shù)據(jù)轉(zhuǎn)移到Hadoop,包括:Sqoop,F(xiàn)lume,直接安裝HDFS作為一個(gè)網(wǎng)絡(luò)文件系統(tǒng)(NFS),或者利用Hadoop的實(shí)時(shí)服務(wù)和應(yīng)用程序。在HDFS中,新的數(shù)據(jù)不會覆蓋現(xiàn)有數(shù)據(jù),而是新建一個(gè)數(shù)據(jù)版本。這一點(diǎn)很重要,因?yàn)?a href='/map/hdfs/' style='color:#000;font-size:inherit;'>HDFS是一個(gè)“寫一次”的文件系統(tǒng)。

對于數(shù)據(jù)處理層,Oozie預(yù)處理源數(shù)據(jù),并將其轉(zhuǎn)換為中間數(shù)據(jù)。不同于源數(shù)據(jù),中間數(shù)據(jù)會被覆蓋,沒有多個(gè)版本,所以中間數(shù)據(jù)量不會很大。

對于實(shí)時(shí)訪問層,Hadoop的實(shí)時(shí)應(yīng)用程序既支持直接數(shù)據(jù)訪問,也支持基于數(shù)據(jù)集的訪問。這些應(yīng)用程序讀取基于Hadoop的中間數(shù)據(jù),并將源數(shù)據(jù)存儲在Hadoop。該應(yīng)用程序也可以用于服務(wù)用戶,或者用于其它企業(yè)的Hadoop集成。

源數(shù)據(jù)用來存儲和初步處理數(shù)據(jù),中間數(shù)據(jù)用于傳遞和整合數(shù)據(jù)。因?yàn)椴捎昧嗽磾?shù)據(jù)和中間數(shù)據(jù)完全分離的結(jié)構(gòu),所以允許開發(fā)人員在沒有任何事務(wù)處理需求的情況下,構(gòu)建任何虛擬和復(fù)雜的應(yīng)用程序。通過中間預(yù)處理過程,明顯減少了服務(wù)數(shù)據(jù)量,使得實(shí)時(shí)數(shù)據(jù)訪問更加靈活。

HADOOP擴(kuò)充性

雖然許多文章認(rèn)為,對于開發(fā)人員來講,Hadoop隱藏了底層的復(fù)雜性。但是,其實(shí)是這些文章沒有充分認(rèn)識到Hadoop的可擴(kuò)展。

通過設(shè)計(jì)Hadoop的實(shí)現(xiàn)方式,可以使開發(fā)人員輕松、無縫地集成新的功能到Hadoop中執(zhí)行。Hadoop明確指定一些類庫來負(fù)責(zé)MapReduce執(zhí)行的不同階段。通過這種方式,滿足了開發(fā)者執(zhí)行特定問題的要求,從而確保每一個(gè)作業(yè)以最低成本、最高性能性能來執(zhí)行。

可以自定義Hadoop執(zhí)行的以下內(nèi)容:

  • 自定義Hadoop并行執(zhí)行問題的方式,包括被分割的方式和執(zhí)行的位置
  • 支持新的輸入數(shù)據(jù)類型和數(shù)據(jù)定位
  • 支持新的輸出數(shù)據(jù)類型
  • 自定義輸出數(shù)據(jù)的位置

本書有一部分內(nèi)容,在他人工作成果的基礎(chǔ)上,對自定義方法,以及實(shí)現(xiàn)方式進(jìn)行了專門的描述。

本書涵蓋了Hadoop企業(yè)級應(yīng)用的所有主要層,如圖1-2所示。

第2章介紹了構(gòu)建數(shù)據(jù)層的方法,包括HDFS和HBase(架構(gòu)和API)。然后,對兩者進(jìn)行對比分析,以及如何將HDFS和HBase相結(jié)合。本章還介紹了Avro(Hadoop的新的序列化框架),以及它在存儲或訪問數(shù)據(jù)中的作用。最后,你將了解HCatalog,以及用它來做廣告和訪問數(shù)據(jù)的方式。

本書將對數(shù)據(jù)處理進(jìn)行了大量的描述。對于應(yīng)用程序的數(shù)據(jù)處理部分,筆者建議使用MapReduce和Oozie。

在本書中,為什么以MapReduce源碼為核心?

你可能會問,為什么本書將重點(diǎn)放在MapReduce源碼上,而不是可以讓MapReduce編程變得更簡單的高級語言上面。你可以在網(wǎng)上或者Hadoop社區(qū)內(nèi),找到很多關(guān)于這方面的討論。在這些討論中給出的解釋是,MapReduce源碼量(就代碼行數(shù)而言)比提供相同的功能的Pig源碼量通常要多很多。盡管這是一個(gè)不爭的事實(shí),不過還有一些其他因素:

并不是什么都可以描述為一種高級語言。有些任務(wù),更適合使用傳統(tǒng)的Java代碼來執(zhí)行。

如果你寫的代碼僅需要執(zhí)行一次,那么代碼的行數(shù)可能對你很重要。但是,如果你正在編寫企業(yè)級應(yīng)用,那么你應(yīng)該考慮其他標(biāo)準(zhǔn),包括性能、可靠性和安全性。通常情況下,MapReduce源碼提供了更多的途徑,從而更容易實(shí)現(xiàn)這些特質(zhì)。

MapReduce通過自定義方式,為用戶提供的更多功能,以進(jìn)一步提高應(yīng)用程序的性能、可靠性和安全性。

在第3章中,您將了解MapReduce的架構(gòu)、主要構(gòu)成和編程模型。本章介紹了MapReduce的應(yīng)用程序設(shè)計(jì)、設(shè)計(jì)模式和MapReduce注意事項(xiàng)。本章還講介紹MapReduce的執(zhí)行是如何實(shí)現(xiàn)的。正如所提到的,MapReduce最強(qiáng)的特征之一是它可以自定義執(zhí)行。第4章會介紹自定義選項(xiàng)的詳細(xì)信息,并舉例說明。第5章通過演示實(shí)例,對MapReduce進(jìn)一步討論,構(gòu)建可靠的MapReduce應(yīng)用。

盡管MapReduce功能很強(qiáng)大,但是對于一個(gè)切實(shí)可行的解決方案,通常需要將多個(gè)MapReduce應(yīng)用集合到在一起。這個(gè)過程非常復(fù)雜,通過使用Hadoop的Workflow/Coordinator(工作流/協(xié)調(diào)員)引擎,可以被大大簡化MapReduce應(yīng)用的集成。

Oozie的價(jià)值

Oozie是Hadoop中最容易被低估的組件。很少有人(甚至沒有)在Hadoop書籍討論這個(gè)極其重要的組件。本書不但彰顯了Oozie什么可以做,而且還提供了一個(gè)端到端的例子,用來展示如何利用Oozie功能來解決實(shí)際問題。類似于Hadoop的其余部分,Oozie的功能也具有很好的擴(kuò)展性。開發(fā)者可以通過不同的方法來擴(kuò)展Oozie的功能。

Hadoop中,最容易被低估的挑戰(zhàn)是:將Hadoop執(zhí)行與企業(yè)處理的其余部分進(jìn)行整合。使用Oozie來協(xié)調(diào)MapReduce應(yīng)用,并通過公開Oozie API的方式公開了Hadoop進(jìn)程。通過這種方式,你會很容易就找到更好的集成方法,對Hadoop處理和企業(yè)處理部分進(jìn)行集成。

第6章描述了Oozie是什么,Oozie的體系結(jié)構(gòu)、主要組成、編程語言和執(zhí)行模型。為了更好地解釋每個(gè)Oozie組件的功能和角色,第7章通過使用Oozie應(yīng)用解決端到端的實(shí)際問題。第8章中,通過展示Oozie的一些高級功能,對Oozie進(jìn)一步描述。這些高級功能包括自定義Workflow活動、動態(tài)生成Workflow和支持超級JAR文件(一個(gè)包含了所有的包及其依賴關(guān)系的JAR文件)。

第9章主要講解實(shí)時(shí)訪問層。該章首先介紹了一個(gè)工業(yè)中實(shí)時(shí)Hadoop應(yīng)用實(shí)例,然后針對實(shí)現(xiàn)方式提出了整體架構(gòu)。接著,介紹了建立這種實(shí)現(xiàn)的三種主要方法——基于HBase的應(yīng)用程序、實(shí)時(shí)查詢以及基于流的處理。本章介紹了總體架構(gòu),并提供了基于HBase實(shí)時(shí)應(yīng)用的兩個(gè)例子。然后,描述了一個(gè)實(shí)時(shí)查詢體系結(jié)構(gòu),并討論了兩個(gè)具體的實(shí)現(xiàn)——Apache Drill 和 Cloudera’s Impala。還介紹了實(shí)時(shí)查詢和MapReduce的對比。最后,您將了解基于Hadoop的復(fù)雜事件處理,以及兩個(gè)具體的實(shí)現(xiàn)——Strom和HFlame。

開發(fā)企業(yè)級應(yīng)用需要大量的規(guī)劃,以及信息安全方面的策略。第10章將重點(diǎn)講解Hadoop的安全模型。

隨著云計(jì)算的發(fā)展,許多企業(yè)嘗試將他們的Hadoop運(yùn)行在云上。第11章的重點(diǎn)是,通過使用EMR實(shí)現(xiàn),在亞馬遜的云上運(yùn)行Hadoop應(yīng)用;并且介紹了其它AWS服務(wù)(如S3),用來補(bǔ)充Hadoop的功能。本章還介紹了,通過使用不同的方法來運(yùn)行云上的Hadoop,并討論了最佳實(shí)踐方案。

除了Hadoop自身的安全問題外,通常Hadoop還需要集成其他企業(yè)的組件,來實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入和導(dǎo)出。第12章將重點(diǎn)介紹,如何才能維護(hù)好那些使用了Hadoop的企業(yè)級應(yīng)用,并提供了示例和最佳安全實(shí)踐,來確保所有Hadoop企業(yè)級應(yīng)用的安全運(yùn)行。

1.6 總結(jié)

本章高度概括了大數(shù)據(jù)和Hadoop之間的關(guān)系。并介紹了大數(shù)據(jù)及其價(jià)值,還介紹了企業(yè)面臨的大數(shù)據(jù)挑戰(zhàn),包括數(shù)據(jù)存儲和處理的挑戰(zhàn)。通過本章,你還了解了Hadoop及其歷史。

通過本章,你了解了Hadoop特點(diǎn),并知道了為什么Hadoop如此適合大數(shù)據(jù)處理。本章還概述了Hadoop的主要組件,并介紹了一些例子,用來展示Hadoop如何簡化數(shù)據(jù)科學(xué),簡化創(chuàng)建企業(yè)應(yīng)用程序的過程。

本章介紹了關(guān)于Hadoop發(fā)行版本的基礎(chǔ)知識,以及為什么許多企業(yè)傾向于選擇特定供應(yīng)商的發(fā)行版。因?yàn)樗麄儾幌M幚鞟pache項(xiàng)目中的兼容問題,或者他們需要供應(yīng)商的技術(shù)支持。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }