自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

三分鐘讀懂Hadoop、HBase、Hive、Spark分布式系統(tǒng)架構

開發(fā) 架構 大數(shù)據(jù) 分布式 Hadoop Spark
我們來分別部署一套hadoop、hbase、hive、spark,在講解部署方法過程中會特殊說明一些重要配置,以及一些架構圖以幫我們理解,目的是為后面講解系統(tǒng)架構和關系打基礎。

機器學習、數(shù)據(jù)挖掘等各種大數(shù)據(jù)處理都離不開各種開源分布式系統(tǒng),hadoop用于分布式存儲和map-reduce計算,spark用于分布式機器學習,hive是分布式數(shù)據(jù)庫,hbase是分布式kv系統(tǒng),看似互不相關的他們卻都是基于相同的hdfs存儲和yarn資源管理,本文通過全套部署方法來讓大家深入系統(tǒng)內(nèi)部以充分理解分布式系統(tǒng)架構和他們之間的關系,本文較長,精華在最后。

本文結(jié)構

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

之后,我們會通過運行一些程序來分析一下這些系統(tǒng)的功能

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

分布式hadoop部署

  • 首先,在http://hadoop.apache.org/releases.html找到穩(wěn)定版tar包
  • 下載到/data/apache并解壓
  • 在真正部署之前,我們先了解一下hadoop的架構

hadoop分為幾大部分:yarn負責資源和任務管理、hdfs負責分布式存儲、map-reduce負責分布式計算

先來了解一下yarn的架構: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

任務調(diào)度也需要ResourceManager負責任務的接受和調(diào)度,在任務調(diào)度中,在Container中啟動的ApplicationMaster(AM)負責這個任務的管理,當任務需要資源時,會向RM申請,分配到的Container用來起任務,然后AM和這些Container做通信,AM和具體執(zhí)行的任務都是在Container中執(zhí)行的

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

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

最后再說map-reduce:Map-reduce依賴于yarn和hdfs,另外還有一個JobHistoryServer用來看任務運行歷史

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

  • 各種默認配置:core-default.xml, hdfs-default.xml, yarn-default.xml, mapred-default.xml
  • 各種web頁面配置:core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml

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

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

下面我們真正的來修改必須修改的配置文件。

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

這里面配置的是mapred的任務歷史相關配置

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

如果正常啟動,可以看到啟動了相應的進程,并且logs目錄下生成了相應的日志

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

如果考慮啟動secondary namenode,可以用同樣的方法啟動

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

如果正常啟動,可以看到啟動了相應的進程,并且logs目錄下生成了相應的日志

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

如果正常啟動,可以看到啟動了相應的進程,并且logs目錄下生成了相應的日志

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

如果正常啟動,可以看到啟動了相應的進程,并且logs目錄下生成了相應的日志

下面我們看下web界面

打開http://127.0.0.1:8088/cluster看下yarn管理的集群資源情況(因為在yarn-site.xml中我們配置了yarn.resourcemanager.webapp.address是127.0.0.1:8088) 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

打開http://127.0.0.1:19888/jobhistory看下map-reduce任務的執(zhí)行歷史情況(因為在mapred-site.xml中我們配置了mapreduce.jobhistory.webapp.address是127.0.0.1:19888) 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

打開http://127.0.0.1:50070/dfshealth.html看下namenode的存儲系統(tǒng)情況(因為在hdfs-site.xml中我們配置了dfs.namenode.http-address是127.0.0.1:50070) 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

到此為止我們對hadoop的部署完成。下面試驗一下hadoop的功能

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

下面我們以input為輸入啟動一個mapreduce任務 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

這時通過http://127.0.0.1:19888/jobhistory可以看到mapreduce任務歷史: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

也可以通過http://127.0.0.1:8088/cluster看到任務歷史 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

我們看到cluster顯示的其實是每一個application的歷史信息,他是yarn(ResourceManager)的管理頁面,也就是不管是mapreduce還是其他類似mapreduce這樣的任務,都會在這里顯示,mapreduce任務的Application Type是MAPREDUCE,其他任務的類型就是其他了,但是jobhistory是專門顯示mapreduce任務的

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,改成: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

其中hbase.zookeeper.quorum是zookeeper的地址,可以配多個,我們試驗用就先配一個

啟動hbase,執(zhí)行: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

這時有可能會讓你輸入本地機器的密碼

啟動成功后可以看到幾個進程起來,包括zookeeper的HQuorumPeer和hbase的HMaster、HRegionServer

下面我們試驗一下hbase的使用,執(zhí)行: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

創(chuàng)建一張表 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

獲取一張表 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

添加一行 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

讀取全部 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

我們同時也看到hdfs中多出了hbase存儲的目錄: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

hbase的架構如下: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

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

客戶端傳輸數(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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

默認會監(jiān)聽10000端口,這時可以通過jdbc客戶端連接這個服務訪問hive

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

spark部署

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

下面我們說下spark集群部署方法:

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

這時可以打開http://127.0.0.1:8080/看到web界面如下: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

根據(jù)上面的url:spark://MYAY:7077,我們再啟動slave: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

刷新web界面如下: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

web界面如下: 

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

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

三分鐘讀懂hadoop、hbase、hive、spark分布式系統(tǒng)架構

總結(jié)一下

  • hdfs是所有hadoop生態(tài)的底層存儲架構,它主要完成了分布式存儲系統(tǒng)的邏輯,凡是需要存儲的都基于其上構建
  • yarn是負責集群資源管理的部分,這個資源主要指計算資源,因此它支撐了各種計算模塊
  • map-reduce組件主要完成了map-reduce任務的調(diào)度邏輯,它依賴于hdfs作為輸入輸出及中間過程的存儲,因此在hdfs之上,它也依賴yarn為它分配資源,因此也在yarn之上
  • hbase基于hdfs存儲,通過獨立的服務管理起來,因此僅在hdfs之上
  • hive基于hdfs存儲,通過獨立的服務管理起來,因此僅在hdfs之上
  • spark基于hdfs存儲,即可以依賴yarn做資源分配計算資源也可以通過獨立的服務管理,因此在hdfs之上也在yarn之上,從結(jié)構上看它和mapreduce一層比較像

總之,每一個系統(tǒng)負責了自己擅長的一部分,同時相互依托,形成了整個hadoop生態(tài)。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2016-09-01 13:48:18

2020-02-24 16:04:55

架構運維技術

2021-10-27 05:47:53

通信協(xié)議協(xié)議網(wǎng)絡技術

2024-05-16 11:13:16

Helm工具release

2009-11-09 12:55:43

WCF事務

2024-12-18 10:24:59

代理技術JDK動態(tài)代理

2024-12-11 12:00:00

C++拷貝

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2021-04-20 13:59:37

云計算

2023-12-27 08:15:47

Java虛擬線程

2024-01-16 07:46:14

FutureTask接口用法

2024-08-30 08:50:00

2013-06-28 14:30:26

棱鏡計劃棱鏡棱鏡監(jiān)控項目

2020-06-30 10:45:28

Web開發(fā)工具

2021-12-17 07:47:37

IT風險框架

2024-10-15 09:18:30

2024-01-12 07:38:38

AQS原理JUC

2024-07-05 09:31:37

2021-02-03 14:31:53

人工智能人臉識別

2009-11-05 16:04:19

Oracle用戶表
點贊
收藏

51CTO技術棧公眾號