大數(shù)據(jù)道場(HDP SandBox) 初探
這里的大數(shù)據(jù)道場是以HDP sandbox 為基礎(chǔ)的,安裝好了virtual box,導(dǎo)入了sandbox鏡像之后,啟動(dòng)虛擬機(jī),來看看我們的大數(shù)據(jù)道場吧。
訪問方式
通過SSH的終端訪問是不二之選
- ssh root@127.0.0.1 -p 2222
輸入用戶名/密碼后就可以進(jìn)入我們的道場主機(jī)了,命令交互與在一臺(tái)ubantu Linux 主機(jī)上沒什么不同。
如果不喜歡ssh,或者是windows的用戶,也可以使用WEB Shell。 在瀏覽器中輸入:
- http://127.0.0.1:4200
如下圖所示,與SSH 沒有什么大的區(qū)別。
當(dāng)然了,還可以從VM 的終端登錄,按fn + alt +f5進(jìn)入即可。
文件傳輸
在本機(jī)和sandbox 之間主要是通過SCP進(jìn)行的。
本地文件復(fù)制到sandbox 中:
- scp -P 2222 ~/Downloads/x.y.z root@127.0.0.1:/root
andbox 文件復(fù)制到本地:
- scp -P 2222 root@127.0.0.1:/sandbox-dir-path/xyz /localpath
還可以通過虛擬機(jī)的共享目錄實(shí)現(xiàn),甚至在sandbox 上搭一個(gè)ftp server。
道場中的基礎(chǔ)設(shè)施
Hadoop 發(fā)布版中比較有名的是CDH和HDP,兩者的主要區(qū)別是CDH 通過Cloudera和hue 來管理集群及節(jié)點(diǎn)中的組件,而HDP是通過Ambri 完成的。
一般的,通過訪問 http://127.0.0.1:8080 就可以通過Ambri 來瀏覽和管理。但是為了管理服務(wù),需要以管理員的身份登錄ambri。Sandbox 2.4 中需要通過執(zhí)行腳本來重置ambri的管理員密碼。
- Abel-Mac-Pro:~ abel$ ssh root@127.0.0.1 -p 2222
- root@127.0.0.1's password:
- Last login: Mon Sep 26 01:47:03 2016
- [root@sandbox ~]# ambari-admin-password-reset
- Please set the password for admin:
- Please retype the password for admin:
- The admin password has been set.
- Restarting ambari-server to make the password change effective...
- Using python /usr/bin/python2
- Restarting ambari-server
- Using python /usr/bin/python2
- Stopping ambari-server
- Ambari Server stopped
- Using python /usr/bin/python2
- Starting ambari-server
- Ambari Server running with administrator privileges.
- Organizing resource files at /var/lib/ambari-server/resources...
- Server PID at: /var/run/ambari-server/ambari-server.pid
- Server out at: /var/log/ambari-server/ambari-server.out
- Server log at: /var/log/ambari-server/ambari-server.log
- Waiting for server start....................
- Ambari Server 'start' completed successfully.
- [root@sandbox ~]#
現(xiàn)在,就可以用ambri的admin帳號(hào)登錄,看看道場中的基礎(chǔ)設(shè)施了。
HDFS
HDFS 是Hadoop集群中數(shù)據(jù)存儲(chǔ)的頭等公民。數(shù)據(jù)在集群數(shù)據(jù)節(jié)點(diǎn)中自動(dòng)復(fù)制。
MapReduce2
眾所周知,mapreduce分為兩個(gè)階段,Map階段:首先將輸入數(shù)據(jù)進(jìn)行分片,然后對每一片數(shù)據(jù)執(zhí)行Mapper程序,計(jì)算出每個(gè)詞的個(gè)數(shù),之后對計(jì)算結(jié)果進(jìn)行分組,每一組由一個(gè)Reducer程序進(jìn)行處理,到此Map階段完成。
Reduce階段:每個(gè)Reduce程序從Map的結(jié)果中拉取自己要處理的分組(叫做Shuffling過程),進(jìn)行匯總和排序(桶排序),對排序后的結(jié)果運(yùn)行Reducer程序,***所有的Reducer結(jié)果進(jìn)行規(guī)約寫入HDFS。
MapReduce2 是運(yùn)行在YARN上的。
YARN
YARN (Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一種新的 Hadoop 資源管理器,它是一個(gè)通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。YARN的基本思想是將JobTracker的兩個(gè)主要功能(資源管理和作業(yè)調(diào)度/監(jiān)控)分離,主要方法是創(chuàng)建一個(gè)全局的ResourceManager(RM)和若干個(gè)針對應(yīng)用程序的ApplicationMaster(AM)。
Tez
Tez是Apache***的支持DAG作業(yè)的開源計(jì)算框架,它可以將多個(gè)有依賴的作業(yè)轉(zhuǎn)換為一個(gè)作業(yè)從而大幅提升DAG作業(yè)的性能。Tez并不直接面向最終用戶——事實(shí)上它允許開發(fā)者為最終用戶構(gòu)建性能更快、擴(kuò)展性更好的應(yīng)用程序。Tez產(chǎn)生的主要原因是繞開MapReduce所施加的限制。
Hive
Hive以類SQL方式簡單而又強(qiáng)大地從HDFS中查詢數(shù)據(jù). 在用Java寫了10行代碼的MapReduce地方,在Hive中, 只需要一條 SQL 查詢語句.
HBase
Hbase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫,該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”,是Google Bigtable的開源實(shí)現(xiàn),利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng)。
Pig
Pig是一種數(shù)據(jù)流語言和運(yùn)行環(huán)境,用于檢索非常大的數(shù)據(jù)集。為大型數(shù)據(jù)集的處理提供了一個(gè)更高層次的抽象。Pig包括兩部分:一是用于描述數(shù)據(jù)流的語言,稱為Pig Latin;二是用于運(yùn)行Pig Latin程序的執(zhí)行環(huán)境。Pig 適合于使用 Hadoop 和 MapReduce 平臺(tái)來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。通過允許對分布式數(shù)據(jù)集進(jìn)行類似 SQL 的查詢,Pig 可以簡化 Hadoop 的使用。
Sqoop
Sqoop是一個(gè)從結(jié)構(gòu)化數(shù)據(jù)庫傳說大量數(shù)據(jù)到HDFS. 使用它,既可以從一個(gè)外部的關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)導(dǎo)入到HDFS, Hive, 或者 HBase, 也可以Hadoop 集群導(dǎo)出到一個(gè)關(guān)系型數(shù)據(jù)庫或者數(shù)據(jù)倉庫.
Oozie
Oozie是一種Java Web應(yīng)用程序,它運(yùn)行在Java servlet容器——即Tomcat——中,并使用數(shù)據(jù)庫來存儲(chǔ)工作流定義和當(dāng)前運(yùn)行的工作流實(shí)例,包括實(shí)例的狀態(tài)和變量。Oozie工作流是放置在控制依賴DAG(有向無環(huán)圖 Direct Acyclic Graph)中的一組動(dòng)作(例如,Hadoop的Map/Reduce作業(yè)、Pig作業(yè)等),其中指定了動(dòng)作執(zhí)行的順序。
Zookeeper
Zookeeper 分布式服務(wù)框架主要是用來解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問題,如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等。
Falcon
Falcon 是一個(gè)面向Hadoop的、新的數(shù)據(jù)處理和管理平臺(tái),設(shè)計(jì)用于數(shù)據(jù)移動(dòng)、數(shù)據(jù)管道協(xié)調(diào)、生命周期管理和數(shù)據(jù)發(fā)現(xiàn)。它使終端用戶可以快速地將他們的數(shù)據(jù)及其相關(guān)的處理和管理任務(wù)“上載(onboard)”到Hadoop集群,可以減少應(yīng)用程序開發(fā)和管理人員編寫和管理復(fù)雜數(shù)據(jù)管理和處理應(yīng)用程序的痛苦。
Storm
Storm是一個(gè)分布式高容錯(cuò)的實(shí)時(shí)計(jì)算系統(tǒng)。Storm令持續(xù)不斷的流計(jì)算變得容易,彌補(bǔ)了Hadoop批處理所不能滿足的實(shí)時(shí)要求。Storm經(jīng)常用于在實(shí)時(shí)分析、在線機(jī)器學(xué)習(xí)、持續(xù)計(jì)算、分布式遠(yuǎn)程調(diào)用和ETL等領(lǐng)域。
Flume
當(dāng)查看生成的攝取日志的時(shí)候,可以使用Apache Flume; 它是穩(wěn)定且高可用的,提供了一個(gè)簡單,靈活和基于流數(shù)據(jù)的可感知編程模型。基本上,僅通過配置管理不需要寫一行代碼就可以陪著一個(gè)數(shù)據(jù)流水線。
Ambri Metrics
Ambari Metrics System 簡稱為 AMS,它主要為系統(tǒng)管理員提供了集群性能的監(jiān)察功能。Metrics 一般分為 Cluster、Host 以及 Service 三個(gè)層級(jí)。Cluster 和 Host 級(jí)主要負(fù)責(zé)監(jiān)察集群機(jī)器相關(guān)的性能,而 Service 級(jí)別則負(fù)責(zé) Host Component 的性能。
Atlas
Atlas 是一個(gè)可伸縮和可擴(kuò)展的核心功能治理服務(wù)。企業(yè)可以利用它高效的管理 Hadoop 以及整個(gè)企業(yè)數(shù)據(jù)生態(tài)的集成。核心功能包括:數(shù)據(jù)分類、集中審計(jì)、搜索、安全和策略引擎。
Kafka
Apache Kafka 是一個(gè)由Linkedin開發(fā)的訂閱-發(fā)布消息的分布式應(yīng)用。是一個(gè)持久化消息的高吞吐量系統(tǒng) , 支持隊(duì)列和話題語意, 使用 ZooKeeper形成集群節(jié)點(diǎn)。 詳情參見kafka.apache.org.
Knox
knox是一個(gè)訪問hadoop集群的restapi網(wǎng)關(guān),它為所有rest訪問提供了一個(gè)簡單的訪問接口點(diǎn),能完成3A認(rèn)證(Authentication,Authorization,Auditing)和SSO(單點(diǎn)登錄)等。
Ranger
Ranger是一個(gè)hadoop集群權(quán)限框架,提供操作、監(jiān)控、管理復(fù)雜的數(shù)據(jù)權(quán)限,它提供一個(gè)集中的管理機(jī)制,管理基于yarn的hadoop生態(tài)圈的所有數(shù)據(jù)權(quán)限。
Slider
Slider 是一個(gè) Yarn 應(yīng)用,它可以用來在 Yarn 上部署并監(jiān)控分布式應(yīng)用。Slider 可以在應(yīng)用運(yùn)行期隨意擴(kuò)展或者收縮應(yīng)用。Slider工具是一個(gè)Java的命令行應(yīng)用,它會(huì)把信息持久化為JSON文檔并存儲(chǔ)到HDFS。當(dāng)集群啟動(dòng)后,我們可以使用命令擴(kuò)展或者收縮集群。集群也可以被停止或者重啟。
Spark
Spark是一個(gè)圍繞速度、易用性和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架。Spark為我們提供了一個(gè)全面、統(tǒng)一的框架用于管理各種有著不同性質(zhì)(文本數(shù)據(jù)、圖表數(shù)據(jù)等)的數(shù)據(jù)集和數(shù)據(jù)源(批量數(shù)據(jù)或?qū)崟r(shí)的流數(shù)據(jù))的大數(shù)據(jù)處理的需求。Spark則允許程序開發(fā)者使用有向無環(huán)圖(DAG)開發(fā)復(fù)雜的多步數(shù)據(jù)管道。而且還支持跨有向無環(huán)圖的內(nèi)存數(shù)據(jù)共享,以便不同的作業(yè)可以共同處理同一個(gè)數(shù)據(jù)。
Spark運(yùn)行在現(xiàn)有的Hadoop分布式文件系統(tǒng)基礎(chǔ)之上(HDFS)提供額外的增強(qiáng)功能。它支持將Spark應(yīng)用部署到現(xiàn)存的Hadoop v1集群(with SIMR – Spark-Inside-MapReduce)或Hadoop v2 YARN集群甚至是Apache Mesos之中。
Zeppelin Notebook
Zeppelin提供了web版的類似ipython的notebook,用于做數(shù)據(jù)分析和可視化。背后可以接入不同的數(shù)據(jù)處理引擎,包括spark, hive, tajo等,原生支持Scala, java, shell, markdown等。Zeppelin 提供了內(nèi)置的 Apache Spark 集成。Zeppelin的Spark集成提供了:
- 自動(dòng)引入SparkContext 和 SQLContext
- 從本地文件系統(tǒng)或maven庫載入運(yùn)行時(shí)依賴的jar包。更多關(guān)于依賴載入器
- 可取消job 和 展示job進(jìn)度
HDP Sandbox 默認(rèn)為我們提供了如此多的組件服務(wù),幾乎涵蓋了hadoop 生態(tài)系統(tǒng),完了么?沒有,還可以用管理員的身份來增加/啟動(dòng)/關(guān)閉 服務(wù),例如Accumulo,Mahout,NiFi,Ranger KMS,SmartSense等,甚至可以自定義服務(wù)的。