日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
一文讀懂Hadoop、HBase、Hive、Spark分布式系統(tǒng)架構(gòu)

機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等各種大數(shù)據(jù)處理都離不開(kāi)各種開(kāi)源分布式系統(tǒng),hadoop用戶分布式存儲(chǔ)和map-reduce計(jì)算,spark用于分布式機(jī)器學(xué)習(xí),hive是分布式數(shù)據(jù)庫(kù),hbase是分布式kv系統(tǒng),看似互不相關(guān)的他們卻都是基于相同的hdfs存儲(chǔ)和yarn資源管理,本文通過(guò)全套部署方法來(lái)讓大家深入系統(tǒng)內(nèi)部以充分理解分布式系統(tǒng)架構(gòu)和他們之間的關(guān)系

專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)離石免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

本文結(jié)構(gòu)

首先,我們來(lái)分別部署一套hadoop、hbase、hive、spark,在講解部署方法過(guò)程中會(huì)特殊說(shuō)明一些重要配置,以及一些架構(gòu)圖以幫我們理解,目的是為后面講解系統(tǒng)架構(gòu)和關(guān)系打基礎(chǔ)。

之后,我們會(huì)通過(guò)運(yùn)行一些程序來(lái)分析一下這些系統(tǒng)的功能

最后,我們會(huì)總結(jié)這些系統(tǒng)之間的關(guān)系

分布式hadoop部署

首先,在 http://hadoop.apache.org/releases.html 找到最新穩(wěn)定版tar包,我選擇的是

http://apache.fayea.com/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

下載到 /data/apache 并解壓

在真正部署之前,我們先了解一下 hadoop 的架構(gòu)

hadoop分為幾大部分:yarn負(fù)責(zé)資源和任務(wù)管理、hdfs負(fù)責(zé)分布式存儲(chǔ)、map-reduce負(fù)責(zé)分布式計(jì)算

先來(lái)了解一下yarn的架構(gòu):

yarn的兩個(gè)部分:資源管理、任務(wù)調(diào)度。

資源管理需要一個(gè)全局的ResourceManager(RM)和分布在每臺(tái)機(jī)器上的NodeManager協(xié)同工作,RM負(fù)責(zé)資源的仲裁,NodeManager負(fù)責(zé)每個(gè)節(jié)點(diǎn)的資源監(jiān)控、狀態(tài)匯報(bào)和Container的管理

任務(wù)調(diào)度也需要ResourceManager負(fù)責(zé)任務(wù)的接受和調(diào)度,在任務(wù)調(diào)度中,在Container中啟動(dòng)的ApplicationMaster(AM)負(fù)責(zé)這個(gè)任務(wù)的管理,當(dāng)任務(wù)需要資源時(shí),會(huì)向RM申請(qǐng),分配到的Container用來(lái)起任務(wù),然后AM和這些Container做通信,AM和具體執(zhí)行的任務(wù)都是在Container中執(zhí)行的

yarn區(qū)別于第一代hadoop的部署(namenode、jobtracker、tasktracker)

然后再看一下hdfs的架構(gòu):hdfs部分由NameNode、SecondaryNameNode和DataNode組成。DataNode是真正的在每個(gè)存儲(chǔ)節(jié)點(diǎn)上管理數(shù)據(jù)的模塊,NameNode是對(duì)全局?jǐn)?shù)據(jù)的名字信息做管理的模塊,SecondaryNameNode是它的從節(jié)點(diǎn),以防掛掉。

最后再說(shuō)map-reduce:Map-reduce依賴于yarn和hdfs,另外還有一個(gè)JobHistoryServer用來(lái)看任務(wù)運(yùn)行歷史

hadoop雖然有多個(gè)模塊分別部署,但是所需要的程序都在同一個(gè)tar包中,所以不同模塊用到的配置文件都在一起,讓我們來(lái)看幾個(gè)最重要的配置文件:

各種默認(rèn)配置:core-default.xml, hdfs-default.xml, yarn-default.xml, mapred-default.xml

各種web頁(yè)面配置:core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml

從這些配置文件也可以看出hadoop的幾大部分是分開(kāi)配置的。

除上面這些之外還有一些重要的配置:hadoop-env.sh、mapred-env.sh、yarn-env.sh,他們用來(lái)配置程序運(yùn)行時(shí)的java虛擬機(jī)參數(shù)以及一些二進(jìn)制、配置、日志等的目錄配置

下面我們真正的來(lái)修改必須修改的配置文件。

修改etc/hadoop/core-site.xml,把配置改成:

 
 
  1.  
  2.      
  3.         fs.defaultFS 
  4.         hdfs://127.0.0.1:8000 
  5.      
  6.      
  7.         io.file.buffer.size 
  8.         131072 
  9.      
  10.  

這里面配置的是hdfs的文件系統(tǒng)地址:本機(jī)的9001端口

修改etc/hadoop/hdfs-site.xml,把配置改成:

 
 
  1.  
  2.      
  3.         dfs.namenode.name.dir 
  4.         file:/data/apache/dfs/name 
  5.      
  6.      
  7.         dfs.datanode.data.dir 
  8.         file:/data/apache/dfs/data 
  9.      
  10.      
  11.         dfs.datanode.fsdataset.volume.choosing.policy 
  12.         org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy 
  13.      
  14.      
  15.         dfs.namenode.http-address 
  16.         127.0.0.1:50070 
  17.      
  18.      
  19.         dfs.namenode.secondary.http-address 
  20.         127.0.0.1:8001 
  21.      
  22.  

這里面配置的是hdfs文件存儲(chǔ)在本地的哪里以及secondary namenode的地址

修改etc/hadoop/yarn-site.xml,把配置改成:

 
 
  1.  
  2.      
  3.         yarn.resourcemanager.hostname 
  4.         127.0.0.1 
  5.      
  6.      
  7.         yarn.resourcemanager.webapp.address 
  8.         127.0.0.1:8088 
  9.      
  10.      
  11.         yarn.nodemanager.aux-services 
  12.         mapreduce_shuffle 
  13.      
  14.      
  15.         yarn.nodemanager.aux-services.mapreduce.shuffle.class 
  16.         org.apache.hadoop.mapred.ShuffleHandler 
  17.      
  18.      
  19.         yarn.log-aggregation-enable 
  20.         true 
  21.      
  22.      
  23.         yarn.log-aggregation.retain-seconds 
  24.         864000 
  25.      
  26.      
  27.         yarn.log-aggregation.retain-check-interval-seconds 
  28.         86400 
  29.      
  30.      
  31.         yarn.nodemanager.remote-app-log-dir 
  32.         /YarnApp/Logs 
  33.      
  34.      
  35.         yarn.log.server.url 
  36.         http://127.0.0.1:19888/jobhistory/logs/ 
  37.      
  38.      
  39.         yarn.nodemanager.local-dirs 
  40.         /data/apache/tmp/ 
  41.      
  42.      
  43.         yarn.scheduler.maximum-allocation-mb 
  44.         5000 
  45.      
  46.      
  47.         yarn.scheduler.minimum-allocation-mb 
  48.         1024 
  49.      
  50.      
  51.         yarn.nodemanager.vmem-pmem-ratio 
  52.         4.1 
  53.      
  54.      
  55.         yarn.nodemanager.vmem-check-enabled 
  56.         false 
  57.      
  58.  

這里面配置的是yarn的日志地址以及一些參數(shù)配置

通過(guò)cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml創(chuàng)建etc/hadoop/mapred-site.xml,內(nèi)容改為如下:

 
 
  1.  
  2.      
  3.         mapreduce.framework.name 
  4.         yarn 
  5.         Execution framework set to Hadoop YARN. 
  6.      
  7.      
  8.         yarn.app.mapreduce.am.staging-dir 
  9.         /tmp/hadoop-yarn/staging 
  10.      
  11.      
  12.         mapreduce.jobhistory.address 
  13.         127.0.0.1:10020 
  14.      
  15.      
  16.         mapreduce.jobhistory.webapp.address 
  17.         127.0.0.1:19888 
  18.      
  19.      
  20.         mapreduce.jobhistory.done-dir 
  21.         ${yarn.app.mapreduce.am.staging-dir}/history/done 
  22.      
  23.  
  24.      
  25.         mapreduce.jobhistory.intermediate-done-dir 
  26.         ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate 
  27.      
  28.      
  29.         mapreduce.jobhistory.joblist.cache.size 
  30.         1000 
  31.      
  32.  
  33.      
  34.         mapreduce.tasktracker.map.tasks.maximum 
  35.         8 
  36.      
  37.      
  38.         mapreduce.tasktracker.reduce.tasks.maximum 
  39.         8 
  40.      
  41.      
  42.         mapreduce.jobtracker.maxtasks.perjob 
  43.         5 
  44.         The maximum number of tasks for a single job. 
  45.             A value of -1 indicates that there is no maximum. 
  46.          
  47.      
  48.  

這里面配置的是mapred的任務(wù)歷史相關(guān)配置

如果你的hadoop部署在多臺(tái)機(jī)器,那么需要修改etc/hadoop/slaves,把其他slave機(jī)器ip加到里面,如果只部署在這一臺(tái),那么就留一個(gè)localhost即可

下面我們啟動(dòng)hadoop,啟動(dòng)之前我們配置好必要的環(huán)境變量:

 
 
  1. export JAVA_HOME="你的java安裝地址" 

先啟動(dòng)hdfs,在此之前要格式化分布式文件系統(tǒng),執(zhí)行:

 
 
  1. ./bin/hdfs namenode -format myclustername 

如果格式化正常可以看到/data/apache/dfs下生成了name目錄

然后啟動(dòng)namenode,執(zhí)行:

 
 
  1. ./sbin/hadoop-daemon.sh --script hdfs start namenode 

如果正常啟動(dòng),可以看到啟動(dòng)了相應(yīng)的進(jìn)程,并且logs目錄下生成了相應(yīng)的日志

然后啟動(dòng)datanode,執(zhí)行:

 
 
  1. ./sbin/hadoop-daemon.sh --script hdfs start datanode 

如果考慮啟動(dòng)secondary namenode,可以用同樣的方法啟動(dòng)

下面我們啟動(dòng)yarn,先啟動(dòng)resourcemanager,執(zhí)行:

 
 
  1. ./sbin/yarn-daemon.sh start resourcemanager 

如果正常啟動(dòng),可以看到啟動(dòng)了相應(yīng)的進(jìn)程,并且logs目錄下生成了相應(yīng)的日志

然后啟動(dòng)nodemanager,執(zhí)行:

 
 
  1. ./sbin/yarn-daemon.sh start nodemanager 

如果正常啟動(dòng),可以看到啟動(dòng)了相應(yīng)的進(jìn)程,并且logs目錄下生成了相應(yīng)的日志

然后啟動(dòng)MapReduce JobHistory Server,執(zhí)行:

 
 
  1. ./sbin/mr-jobhistory-daemon.sh start historyserver 

如果正常啟動(dòng),可以看到啟動(dòng)了相應(yīng)的進(jìn)程,并且logs目錄下生成了相應(yīng)的日志

下面我們看下web界面

打開(kāi) http://127.0.0.1:8088/cluster 看下yarn管理的集群資源情況(因?yàn)樵趛arn-site.xml中我們配置了yarn.resourcemanager.webapp.address是127.0.0.1:8088)

打開(kāi) http://127.0.0.1:19888/jobhistory 看下map-reduce任務(wù)的執(zhí)行歷史情況(因?yàn)樵趍apred-site.xml中我們配置了mapreduce.jobhistory.webapp.address是127.0.0.1:19888)

打開(kāi) http://127.0.0.1:50070/dfshealth.html 看下namenode的存儲(chǔ)系統(tǒng)情況(因?yàn)樵趆dfs-site.xml中我們配置了dfs.namenode.http-address是127.0.0.1:50070)

到此為止我們對(duì)hadoop的部署完成。下面試驗(yàn)一下hadoop的功能

先驗(yàn)證一下hdfs分布式文件系統(tǒng),執(zhí)行以下命令看是否有輸出:

 
 
  1. [root@MYAY hadoop]# ./bin/hadoop fs -mkdir /input 
  2. [root@MYAY hadoop]# cat data 
  3. [root@MYAY hadoop]# ./bin/hadoop fs -put input /input 
  4. [root@MYAY hadoop]# ./bin/hadoop fs -ls /input 
  5. Found 1 items 
  6. -rw-r--r--   3 root supergroup          8 2016-08-07 15:04 /input/data 

這時(shí)通過(guò) http://127.0.0.1:50070/dfshealth.html 可以看到存儲(chǔ)系統(tǒng)的一些變化

下面我們以input為輸入啟動(dòng)一個(gè)mapreduce任務(wù)

 
 
  1. [root@MYAY hadoop]# ./bin/hadoop jar ./share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar -input /input -output /output -mapper cat -reducer wc 

之后看是否產(chǎn)生了/output的輸出:

 
 
  1. [root@MYAY hadoop]# ./bin/hadoop fs -ls /output 
  2. Found 2 items 
  3. -rw-r--r--   3 root supergroup          0 2016-08-07 15:11 /output/_SUCCESS 
  4. -rw-r--r--   3 root supergroup         25 2016-08-07 15:11 /output/part-00000 
  5. [root@MYAY hadoop]# ./bin/hadoop fs -cat /output/part-00000 
  6.       4       4      12 

這時(shí)通過(guò) http://127.0.0.1:19888/jobhistory 可以看到mapreduce任務(wù)歷史:

也可以通過(guò) http://127.0.0.1:8088/cluster 看到任務(wù)歷史

為什么兩處都有歷史呢?他們的區(qū)別是什么呢?

我們看到cluster顯示的其實(shí)是每一個(gè)application的歷史信息,他是yarn(ResourceManager)的管理頁(yè)面,也就是不管是mapreduce還是其他類(lèi)似mapreduce這樣的任務(wù),都會(huì)在這里顯示,mapreduce任務(wù)的Application Type是MAPREDUCE,其他任務(wù)的類(lèi)型就是其他了,但是jobhistory是專(zhuān)門(mén)顯示mapreduce任務(wù)的

hbase的部署

首先從 http://www.apache.org/dyn/closer.cgi/hbase/ 下載穩(wěn)定版安裝包,我下的是https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/hbase-1.2.2-bin.tar.gz

解壓后修改conf/hbase-site.xml,改成:

 
 
  1.  
  2.      
  3.         hbase.cluster.distributed 
  4.         true 
  5.      
  6.      
  7.         hbase.rootdir 
  8.         hdfs://127.0.0.1:8001/hbase 
  9.      
  10.      
  11.         hbase.zookeeper.quorum 
  12.         127.0.0.1 
  13.      
  14.  

其中hbase.rootdir配置的是hdfs地址,ip:port要和hadoop/core-site.xml中的fs.defaultFS保持一致

其中hbase.zookeeper.quorum是zookeeper的地址,可以配多個(gè),我們?cè)囼?yàn)用就先配一個(gè)

啟動(dòng)hbase,執(zhí)行:

 
 
  1. ./bin/start-hbase.sh 

這時(shí)有可能會(huì)讓你輸入本地機(jī)器的密碼

啟動(dòng)成功后可以看到幾個(gè)進(jìn)程起來(lái),包括zookeeper的HQuorumPeer和hbase的HMaster、HRegionServer

下面我們?cè)囼?yàn)一下hbase的使用,執(zhí)行:

 
 
  1. hbase(main):001:0> status 
  2. 1 active master, 0 backup masters, 1 servers, 0 dead, 3.0000 average load 

創(chuàng)建一張表

 
 
  1. hbase(main):004:0> create 'table1','field1' 
  2. 0 row(s) in 1.3430 seconds 
  3.  
  4. => Hbase::Table - table1 

獲取一張表

 
 
  1. hbase(main):005:0> t1 = get_table('table1') 
  2. 0 row(s) in 0.0010 seconds 
  3.  
  4. => Hbase::Table - table1 

添加一行

 
 
  1. hbase(main):008:0> t1.put 'row1', 'field1:qualifier1', 'value1' 
  2. 0 row(s) in 0.4160 seconds 

讀取全部

 
 
  1. hbase(main):009:0> t1.scan 
  2. ROW                                                                 COLUMN+CELL 
  3.  row1                                                               column=field1:qualifier1, timestamp=1470621285068, value=value1 
  4. 1 row(s) in 0.1000 seconds 

我們同時(shí)也看到hdfs中多出了hbase存儲(chǔ)的目錄:

 
 
  1. [root@MYAY hbase]# ./hadoop/bin/hadoop fs -ls /hbase 
  2. Found 7 items 
  3. drwxr-xr-x   - root supergroup          0 2016-08-08 09:05 /hbase/.tmp 
  4. drwxr-xr-x   - root supergroup          0 2016-08-08 09:58 /hbase/MasterProcWALs 
  5. drwxr-xr-x   - root supergroup          0 2016-08-08 09:05 /hbase/WALs 
  6. drwxr-xr-x   - root supergroup          0 2016-08-08 09:05 /hbase/data 
  7. -rw-r--r--   3 root supergroup         42 2016-08-08 09:05 /hbase/hbase.id 
  8. -rw-r--r--   3 root supergroup          7 2016-08-08 09:05 /hbase/hbase.version 
  9. drwxr-xr-x   - root supergroup          0 2016-08-08 09:24 /hbase/oldWALs 

這說(shuō)明hbase是以hdfs為存儲(chǔ)介質(zhì)的,因此它具有分布式存儲(chǔ)擁有的所有優(yōu)點(diǎn)

hbase的架構(gòu)如下:

其中HMaster負(fù)責(zé)管理HRegionServer以實(shí)現(xiàn)負(fù)載均衡,負(fù)責(zé)管理和分配HRegion(數(shù)據(jù)分片),還負(fù)責(zé)管理命名空間和table元數(shù)據(jù),以及權(quán)限控制

HRegionServer負(fù)責(zé)管理本地的HRegion、管理數(shù)據(jù)以及和hdfs交互。

Zookeeper負(fù)責(zé)集群的協(xié)調(diào)(如HMaster主從的failover)以及集群狀態(tài)信息的存儲(chǔ)

客戶端傳輸數(shù)據(jù)直接和HRegionServer通信

hive的部署

從 http://mirrors.hust.edu.cn/apache/hive 下載安裝包,我下的是http://mirrors.hust.edu.cn/apache/hive/stable-2/apache-hive-2.1.0-bin.tar.gz

解壓后,我們先準(zhǔn)備hdfs,執(zhí)行:

 
 
  1. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -mkdir /tmp 
  2. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -mkdir /user 
  3. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -mkdir /user/hive 
  4. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -mkdir /user/hive/warehourse 
  5. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -chmod g+w /tmp 
  6. [root@MYAY hadoop]# ./hadoop/bin/hadoop fs -chmod g+w /user/hive/warehourse 

使用hive必須提前設(shè)置好HADOOP_HOME環(huán)境變量,這樣它可以自動(dòng)找到我們的hdfs作為存儲(chǔ),不妨我們把各種HOME和各種PATH都配置好,如:

 
 
  1. HADOOP_HOME=/data/apache/hadoop 
  2. export HADOOP_HOME 
  3. HBASE_HOME=/data/apache/hbase 
  4. export HBASE_HOME 
  5. HIVE_HOME=/data/apache/hive 
  6. export HIVE_HOME 
  7. PATH=$PATH:$HOME/bin 
  8. PATH=$PATH:$HBASE_HOME/bin 
  9. PATH=$PATH:$HIVE_HOME/bin 
  10. PATH=$PATH:$HADOOP_HOME/bin 
  11. export PATH 

拷貝創(chuàng)建hive-site.xml、hive-log4j2.properties、hive-exec-log4j2.properties,執(zhí)行

 
 
  1. [root@MYAY hive]# cp conf/hive-default.xml.template conf/hive-site.xml 
  2. [root@MYAY hive]# cp conf/hive-log4j2.properties.template conf/hive-log4j2.properties 
  3. [root@MYAY hive]# cp conf/hive-exec-log4j2.properties.template conf/hive-exec-log4j2.properties 

修改hive-site.xml,把其中的${system:java.io.tmpdir}都修改成/data/apache/tmp,你也可以自己設(shè)置成自己的tmp目錄,把${system:user.name}都換成用戶名

 
 
  1. :%s/${system:java.io.tmpdir}/\/data\/apache\/tmp/g 
  2. :%s/${system:user.name}/myself/g 

初始化元數(shù)據(jù)數(shù)據(jù)庫(kù)(默認(rèn)保存在本地的derby數(shù)據(jù)庫(kù),也可以配置成mysql),注意,不要先執(zhí)行hive命令,否則這一步會(huì)出錯(cuò),具體見(jiàn) http://stackoverflow.com/questions/35655306/hive-installation-issues-hive-metastore-database-is-not-initialized ,下面執(zhí)行:

 
 
  1. [root@MYAY hive]# schematool -dbType derby -initSchema 

成功之后我們可以以客戶端形式直接啟動(dòng)hive,如:

 
 
  1. [root@MYAY hive]# hive 
  2. hive> show databases; 
  3. OK 
  4. default 
  5. Time taken: 1.886 seconds, Fetched: 1 row(s) 
  6. hive> 

試著創(chuàng)建個(gè)數(shù)據(jù)庫(kù)是否可以:

 
 
  1. hive> create database mydatabase; 
  2. OK 
  3. Time taken: 0.721 seconds 
  4. hive> show databases; 
  5. OK 
  6. default 
  7. mydatabase 
  8. Time taken: 0.051 seconds, Fetched: 2 row(s) 
  9. hive> 

這樣我們還是單機(jī)的hive,不能在其他機(jī)器登陸,所以我們要以server形式啟動(dòng):

 
 
  1. nohup hiveserver2 &> hive.log & 

默認(rèn)會(huì)監(jiān)聽(tīng)10000端口,這時(shí)可以通過(guò)jdbc客戶端連接這個(gè)服務(wù)訪問(wèn)hive

hive的具體使用在這里不贅述

spark部署

首先在 http://spark.apache.org/downloads.html 下載指定hadoop版本的安裝包,我下載的是http://d3kbcqa49mib13.cloudfront.net/spark-2.0.0-bin-hadoop2.7.tgz

spark有多種部署方式,首先支持單機(jī)直接跑,如執(zhí)行樣例程序:

 
 
  1. ./bin/spark-submit examples/src/main/python/pi.py 10 

它可以直接運(yùn)行得出結(jié)果

下面我們說(shuō)下spark集群部署方法:

解壓安裝包后直接執(zhí)行:

 
 
  1. [root@MYAY spark-2.0.0-bin-hadoop2.7]# sbin/start-master.sh 

這時(shí)可以打開(kāi) http://127.0.0.1:8080/ 看到web界面如下:

根據(jù)上面的url:spark://MYAY:7077,我們?cè)賳?dòng)slave:

 
 
  1. [root@MYAY spark-2.0.0-bin-hadoop2.7]# ./sbin/start-slave.sh spark://MYAY:7077 

刷新web界面如下:

出現(xiàn)了一個(gè)worker,我們可以根據(jù)需要啟動(dòng)多個(gè)worker

下面我們把上面執(zhí)行過(guò)的任務(wù)部署到spark集群上執(zhí)行:

 
 
  1. ./bin/spark-submit --master spark://MYAY:7077 examples/src/main/python/pi.py 10 

web界面如下:

spark程序也可以部署到y(tǒng)arn集群上執(zhí)行,也就是我們部署hadoop時(shí)啟動(dòng)的yarn

我們需要提前配置好HADOOP_CONF_DIR,如下:

 
 
  1. HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/ 
  2. export HADOOP_CONF_DIR 

下面我們把任務(wù)部署到y(tǒng)arn集群上去:

 
 
  1. ./bin/spark-submit --master yarn --deploy-mode cluster examples/src/main/python/pi.py 10 

看 http://127.0.0.1:8088/cluster 效果如下:

總結(jié)一下

hdfs是所有hadoop生態(tài)的底層存儲(chǔ)架構(gòu),它主要完成了分布式存儲(chǔ)系統(tǒng)的邏輯,凡是需要存儲(chǔ)的都基于其上構(gòu)建

yarn是負(fù)責(zé)集群資源管理的部分,這個(gè)資源包括計(jì)算資源和存儲(chǔ)資源,因此它也支撐了hdfs和各種計(jì)算模塊

map-reduce組件主要完成了map-reduce任務(wù)的調(diào)度邏輯,它依賴于hdfs作為輸入輸出及中間過(guò)程的存儲(chǔ),因此在hdfs之上,它也依賴yarn為它分配資源,因此也在yarn之上

hbase基于hdfs存儲(chǔ),通過(guò)獨(dú)立的服務(wù)管理起來(lái),因此僅在hdfs之上

hive基于hdfs存儲(chǔ),通過(guò)獨(dú)立的服務(wù)管理起來(lái),因此僅在hdfs之上

spark基于hdfs存儲(chǔ),即可以依賴yarn做資源分配計(jì)算資源也可以通過(guò)獨(dú)立的服務(wù)管理,因此在hdfs之上也在yarn之上,從結(jié)構(gòu)上看它和mapreduce一層比較像

總之,每一個(gè)系統(tǒng)負(fù)責(zé)了自己擅長(zhǎng)的一部分,同時(shí)相互依托,形成了整個(gè)hadoop生態(tài)。


本文名稱(chēng):一文讀懂Hadoop、HBase、Hive、Spark分布式系統(tǒng)架構(gòu)
鏈接分享:http://m.5511xx.com/article/djjhpde.html