使用兩臺(tái)Centos7系統(tǒng)搭建Hadoop-3.1.4完全分布式集群
大數(shù)據(jù)常用技術(shù)詞匯
未來的競(jìng)爭(zhēng),是數(shù)據(jù)之爭(zhēng)。大數(shù)據(jù)本質(zhì)上是Hadoop的生態(tài)群,下面是常用技術(shù)詞匯
- ETL:代表提取、轉(zhuǎn)換和加載。
- Hadoop:分布式系統(tǒng)基礎(chǔ)架構(gòu)
- HDFS:分布式文件系統(tǒng)
- HBase:大數(shù)據(jù)的NoSQL數(shù)據(jù)庫
- Hive:數(shù)據(jù)倉(cāng)庫工具
- DAG :第二代計(jì)算引擎
- Spark:第三代數(shù)據(jù)處理引擎
- Flink:第四代數(shù)據(jù)處理引擎
- MapReduce:最初的并行計(jì)算框架
- Sqoop:nosql數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫之間傳輸數(shù)據(jù)的工具
- Hive:數(shù)據(jù)倉(cāng)庫工具
- Storm:分布式實(shí)時(shí)計(jì)算系統(tǒng)
- Flume:分布式的海量日志采集系統(tǒng)。
- Kafka:分布式發(fā)布訂閱消息系統(tǒng)
- ElasticSearch:分布式搜索引擎
- Kibana:ElasticSearch大數(shù)據(jù)的圖形化展示工具
- Logstash:Elasticsearch 的傳送帶
- Neo4j:nosql圖形數(shù)據(jù)庫
- Oozie:工作流調(diào)度系統(tǒng) -YARN:作業(yè)調(diào)度和集群資源管理的框架
Hadoop集群
大數(shù)據(jù)是基于集群的分布式系統(tǒng)。所謂集群是指一組獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成的一多處理器系統(tǒng),它們之間通過網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信,讓若干臺(tái)計(jì)算機(jī)聯(lián)合起來工作(服務(wù)),可以是并行的,也可以是做備份。
- 分布式 :分布式的主要工作是分解任務(wù),將職能拆解,多個(gè)人在一起做不同的事
- 集群:集群主要是將同一個(gè)業(yè)務(wù),部署在多個(gè)服務(wù)器上 ,多個(gè)人在一起做同樣的事
Hadoop介紹
Hadoop是Apache旗下的一個(gè)用Java語言實(shí)現(xiàn)開源軟件框架,是一個(gè)存儲(chǔ)和計(jì)算大規(guī)模數(shù)據(jù)的軟件平臺(tái)。
Hadoop是Apache Lucene創(chuàng)始人 Doug Cutting 創(chuàng)建的,最早起源一個(gè)Nutch項(xiàng)目。
- 2003年Google發(fā)表了一篇GFS論文,為大規(guī)模數(shù)據(jù)存儲(chǔ)提供了可行的解決方案。
- 2004年 Google發(fā)表論文MapReduce系統(tǒng),為大規(guī)模數(shù)據(jù)計(jì)算提供可行的解決方案。Nutch的開發(fā)人員以谷歌的論文為基礎(chǔ),完成了相應(yīng)的開源實(shí)現(xiàn)HDFS和MAPREDUCE,并從Nutch中剝離成為獨(dú)立項(xiàng)目Hadoop。
- 到2008年1月,Hadoop成為Apache頂級(jí)項(xiàng)目,迎來了它的快速發(fā)展期。
- 如今,國(guó)內(nèi)外的互聯(lián)網(wǎng)巨頭基本都在使用Hadoop框架作為大數(shù)據(jù)解決方案,越來越多的企業(yè)將Hadoop 技術(shù)作為進(jìn)入大數(shù)據(jù)領(lǐng)域的必備技術(shù)。
目前,Hadoop發(fā)行版本分為開源社區(qū)版和商業(yè)版。
- 開源社區(qū)版:指由Apache軟件基金會(huì)維護(hù)的版本,是官方維護(hù)的版本體系,版本豐富,兼容性稍差。
- 商業(yè)版:指由第三方商業(yè)公司在社區(qū)版Hadoop基礎(chǔ)上進(jìn)行了一些修改、整合以及各個(gè)服務(wù)組件兼容性測(cè)試而發(fā)行的版本,比較著名的有cloudera的CDH等。
開源社區(qū)版本:一般使用2.x版本系列,3.x版本系列:該版本是最新版本,但是還不太穩(wěn)定。
廢話不說了,開始今天的主題:使用三臺(tái)Centos7系統(tǒng)搭建Hadoop2.X完全分布式集群
去年使用CentOS 7搭建了hadoop3.X分布式集群,由于換了電腦,考慮到電腦安裝了很多前其他的東西,這次是使用二臺(tái)Centos7系統(tǒng)搭建Hadoop完全分布式集群,雖然Centos更新到8版本,但是很多大數(shù)據(jù)學(xué)習(xí)都是選擇基于Centos7系統(tǒng)搭建。這里不搭建一臺(tái)的偽分布式,搭建的版本是目前Haddop3.X穩(wěn)定的Hadoop-3.1.4。
去年對(duì)應(yīng)的文章教程:
- https://blog.csdn.net/weixin_44510615/article/details/104625802
- https://blog.csdn.net/weixin_44510615/article/details/106540129
集群搭建前的準(zhǔn)備
Centos7的下載地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso。共4.8g。
在集群搭建前的準(zhǔn)備,需要在VMwear Workstation搭建一個(gè)Centos7系統(tǒng),關(guān)于搭建過程,由于簡(jiǎn)單,這里直接省略。
在通過物理機(jī)連接虛擬機(jī)的時(shí)候,需要有VMnet1和VMnet8兩個(gè)虛擬網(wǎng)卡。
如果安裝Vmware沒有VMnet1和VMnet8,據(jù)我以前踩的坑,網(wǎng)上說安裝cclear軟件包進(jìn)行注冊(cè)表的刪除,那是不斷刪除下載Vmware,并沒有解決問題,最終采用系統(tǒng)刷機(jī)的辦法,得以解決。
因此,搭建虛擬機(jī)的前提是,本地主機(jī)必須有虛擬本地環(huán)境,不然你怎么搞都是白搭。
在這里插入圖片描述
在此,就可以實(shí)現(xiàn)本地ping通虛擬機(jī)的IP,實(shí)現(xiàn)本地和虛擬機(jī)的信息連接。
這樣,就可以通過xshell對(duì)centos7進(jìn)行遠(yuǎn)程的連接。
在第一次使用Centos7,需要對(duì)創(chuàng)建的用戶提供管理員的權(quán)限,因此需要使用root賬號(hào)進(jìn)行相關(guān)的修改,防止出現(xiàn)node01 不在 sudoers 文件中。此事將被報(bào)告。的報(bào)錯(cuò)。
使 用 :wq! 保存退出、
如果遠(yuǎn)程連接失敗,應(yīng)該沒有開發(fā)端口和IP地址。需要設(shè)置sudo vim /etc/ssh/sshd_config
設(shè)置靜態(tài)ip
設(shè)置靜態(tài)ip,通過ifconfig
重啟網(wǎng)卡
配置阿里云yum源
一開始下載速度很慢,需要配置阿里云yum源,下面來源官方文檔,使用的是root賬號(hào)。
- #配置阿里云yum源
- yum install -y wget
- cd /etc/yum.repos.d/
- mv CentOS-Base.repo CentOS-Base.repo.bak
- wget http://mirrors.aliyun.com/repo/Centos-7.repo
- mv Centos-7.repo CentOS-Base.repo
- #配置epel源
- wget https://mirrors.aliyun.com/repo/epel-7.repo
- #清除緩存并更新
- yum clean all
- yum makecache
- yum update
安裝JDK
由于 hadoop 框架的啟動(dòng)是依賴 java 環(huán)境,因此需要準(zhǔn)備 jdk 環(huán)境。目前,OpenJDK 和 Oracle Java 是最主要的兩個(gè) Java 實(shí)現(xiàn)。卸載Linux系統(tǒng)原有jdkOpenJDK,然后安裝Oracle Java。
具體博客:https://blog.csdn.net/weixin_44510615/article/details/104425843
克隆一個(gè)虛擬機(jī)
并通過設(shè)置靜態(tài)分別為192.168.147.129,并將三臺(tái)Centos7主機(jī)名分別設(shè)置node01和node02,區(qū)別centos7機(jī)器。
之前創(chuàng)建用戶名使用node01,發(fā)現(xiàn)自己搞錯(cuò)了,于是把兩個(gè)主機(jī)的用戶名都設(shè)置為hadoop。
關(guān)于Centos7修改用戶名:[root@node01 ~]# usermod -l hadoop -d /home/hadoop -m node01。
自此我們有兩臺(tái)Centos電腦,在hadoop集群不使用root賬號(hào)。
xshell均可連接成功。
配置ssh免密碼登錄
- [root@node01 ~]# vim /etc/sysconfig/network
- #########
- HOSTNAME=node01
- [root@node01 ~]# vim /etc/hosts
- #########
- 192.168.147.128 node01
- 192.168.147.129 node02
- [root@node01 ~]# systemctl stop firewalld
- [root@node01 ~]# systemctl disable firewalld.service
- [root@node02 ~]# vim /etc/sysconfig/network
- #########
- HOSTNAME=node02
- [root@node02 ~]# vim /etc/hosts
- #########
- 192.168.147.128 node01
- 192.168.147.129 node02
- [root@node02 ~]# systemctl stop firewalld
- [root@node02 ~]# systemctl disable firewalld.service
實(shí)現(xiàn)hadoop賬號(hào)自由在node01和node02切換,具體查看我的博客:https://blog.csdn.net/weixin_44510615/article/details/104528001?
下載hadoop下載鏈接:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz
- [hadoop@node01 ~]$ ls
- hadoop-3.1.4.tar.gz module wget-log 公共 模板 視頻 圖片 文檔 下載 音樂 桌面
- [hadoop@node01 ~]$ mkdir -p module/hadoop
- [hadoop@node01 ~]$ tar -zxvf hadoop-3.1.4.tar.gz -C module/hadoop/
- [hadoop@node01 ~]$ cd module/hadoop/hadoop-3.1.4/
- [hadoop@node01 hadoop-3.1.4]$ sudo mkdir -p data/tmp
- [hadoop@node01 hadoop-3.1.4]$ ls
- bin data etc include lib libexec LICENSE.txt NOTICE.txt README.txt sbin share
修改配置文件
在配置集群/分布式模式時(shí),需要修改“hadoop/etc/hadoop”目錄下的配置文件,這里僅設(shè)置正常啟動(dòng)所必須的設(shè)置項(xiàng),包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5個(gè)文件,更多設(shè)置項(xiàng)可查看官方說明。
修改文件hadoop-env.sh
- [hadoop@node01 hadoop]# vim hadoop-env.sh
- ############
- export JAVA_HOME=/usr/java/jdk1.8.0_281/
- [hadoop@node01 hadoop]# vim yarn-env.sh
- ############
- export JAVA_HOME=/usr/java/jdk1.8.0_231
修改文件workers
在Master節(jié)點(diǎn)的workers文件中指定Slave節(jié)點(diǎn),也就是node02
- [hadoop@node01 hadoop]$ vim workers
- [hadoop@node01 hadoop]$ cat workers
- node02
修改文件core-site.xml
請(qǐng)把core-site.xml文件修改為如下內(nèi)容:
修改文件hdfs-site.xml
請(qǐng)把hdfs-site.xml文件修改為如下內(nèi)容:
對(duì)于Hadoop的分布式文件系統(tǒng)HDFS而言,一般都是采用冗余存儲(chǔ),冗余因子通常為3,也就是說,一份數(shù)據(jù)保存三份副本。但是,本教程只有一個(gè)Slave節(jié)點(diǎn)作為數(shù)據(jù)節(jié)點(diǎn),即集群中只有一個(gè)數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)只能保存一份,所以 ,dfs.replication的值還是設(shè)置為 1。
修改文件mapred-site.xml
請(qǐng)把mapred-site.xml文件修改為如下內(nèi)容:
- [hadoop@node01 hadoop]$ cat mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
修改文件 yarn-site.xml
請(qǐng)把yarn-site.xml文件修改為如下內(nèi)容:
配置Hadoop環(huán)境變量
在etc/profile增加hadoop路徑:
初始化HDFS
初始化HDFS,執(zhí)行 namenode 初始化命令:
- hdfs namenode -format
可能出現(xiàn)創(chuàng)建文件夾失敗的問題,這個(gè)權(quán)限問題,使用 root 賬號(hào)使用命令sudo chmod -R a+w /絕對(duì)路徑。初始化HDFS失敗都要把之前創(chuàng)建的文件夾給刪除。
啟動(dòng)集群
直接執(zhí)行start-all.sh,啟動(dòng) Hadoop。此時(shí) node02上的相關(guān)服務(wù)也會(huì)被啟動(dòng):
在每臺(tái)服務(wù)器上使用 jps 命令查看服務(wù)進(jìn)程,
或直接進(jìn)入 Web-UI 界面進(jìn)行查看,端口為 9870??梢钥吹酱藭r(shí)有一個(gè)可用的 Datanode:
接著可以查看 Yarn 的情況,端口號(hào)為 8088 :
至此,Hadoop分布式集群搭建成功。