目录
搭建环境:
一、前期准备
1.基础准备
2.服务器功能规划(提前规划好,有利于我们后面配置文件的修改和搭建)
3.搭建第一台虚拟机的Hadoop环境
4.克隆虚拟机
5.配置虚拟机之间的映射(三台虚拟机都需要配置)
6.设置SSH无密码登录
7.启动hadoop集群
(1)启动HDFS
(2)启动YARN
(3)查看对应主机的服务是否启动
(4)浏览器查看页面
这是一篇虚拟机上Linux环境下hadoop集群搭建的文章。
本文的思路是:在虚拟机上安装并部署Apache Hadoop 3.1.3版本,介绍它的集群架构组成、各模块协同工作原理、技术细节。
通过安装Hadoop集群,可以让你对它有更好的理解,这对于学习hadoop来说是很好的帮助。
电脑配置----------Windows 10家庭版,8GB运行内存
(最近学习分布式架构和微服务架构,搭了好多台虚拟机后,明显感觉配置跟不上了,趁着双11,赶紧又下单了一条8GB的内存,回来后就是16GB运行内存了,感觉爽歪歪............)
Linux虚拟机------镜像为 CentOS-7-x86_64-DVD-1810.iso
jdk版本--------jdk-8u74-linux-x64
hadoop版本-------hadoop-3.1.3
(hadoop 官网下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz)
linux远程连接工具--------Xshell-6+FTP(注意:这两个版本需要对应,否则可能会无法使用)
因为之前没上传百度网盘,所以上面环境的软件下载地址就不放了。如果有需要,可以留言。
在你电脑上装好虚拟机搭建环境,然后装好linux系统,在linux上装好JDK,并且配置好环境,之前我已经写过了,附上原文链接(安装教程:https://blog.csdn.net/qq_40722827/article/details/102540532),上传jdk(linux版本)安装包,还有hadoop安装包,这里就需要用到linux远程工具Xshell和ftp,所以你得先把工具提前安装好。
(可以分别装三台,也可以装一台,然后克隆两台)
不过克隆的话,需要修改IP地址和主机名,个人推荐先搭好一台的所有环境,然后克隆两台出来,比较省事。
zookeeper1 | zookeeper2 | zookeeper3 |
---|---|---|
NameNode | ResourceManage | |
DataNode | DataNode | DataNode |
NodeManager | NodeManager | NodeManager |
HistoryServer | SecondaryNameNode |
(默认已经搭建好jdk,并且已经上传,并解压hadoop安装包,我的hadoop解压包放在了 /usr/local/ 下)
磨叽了这么多,终于开始配置环境了
(1)配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径:
首先,进入到配置文件目录下
(建议把 hadoop解压到 /usr/local/ 文件夹下面,便于参考我的操作,一般企业中,约定 /usr/local/ 目录下就是放安装的软件的)
cd /usr/local/hadoop/etc/hadoop (修改的几乎所有hadoop配置文件都在这个目录)
然后分别进入hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件,进行编辑
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh
进入一个文件内,就将下面这句jdk配置路径放入,保存,关闭
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_74 (这是我的jdk bin目录之前的路径,具体你的还需要看你jdk安装在了哪里)
(2)配置core-site.xml
(配置之前,你先要去 这儿 /usr/local/hadoop/ 创建data文件夹,然后在data文件夹下创建tmp文件夹。
具体可以直接在 FTP上操作(这个比较简单一点,和Windows环境下一模一一样),当然也可以拿命令行来操作)
vi core-site.xml (打开后,编辑文件,将下面的内容放入,下同)
fs.defaultFS
hdfs://zookeeper1:9000
hadoop.tmp.dir
/usr/local/hadoop/data/tmp
注意:如果你的主机名不是 zookeeper1 ,上面的配置文件,你要改成你的主机名(下同)
fs.defaultFS为NameNode的地址。
hadoop.tmp.dir为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。
(3)配置hdfs-site.xml
vi hdfs-site.xml (打开后,编辑文件,将下面的内容放入)
dfs.namenode.secondary.http-address
zookeeper3:50090
dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将zookeeper3规划为SecondaryNameNode服务器。
所以这里设置为:zookeeper3:50090
(4) 配置workers
vi workers
zookeeper1
zookeeper2
zookeeper3
workers文件是指定HDFS上有哪些DataNode节点。
(5) 配置yarn-site.xml
vi yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
zookeeper2
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
106800
根据规划yarn.resourcemanager.hostname
这个指定resourcemanager服务器指向zookeeper2
。
yarn.log-aggregation-enable
是配置是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds
是配置聚集的日志在HDFS上最多保存多长时间。
(6)配置mapred-site.xml
vi mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
zookeeper1:10020
mapreduce.jobhistory.webapp.address
zookeeper1:19888
mapreduce.framework.name设置mapreduce任务运行在yarn上。
mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在zookeeper1机器上。
mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。
(7)配置Hadoop在linux系统中的环境变量(和jdk一样的道理)
cd /etc
vi profile
添加下面的内容
export HADOOP_HOME=/usr/local/hadoop (这儿也需要看你hadoop的安装路径)
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
(把搭建好的这台虚拟机在克隆2台出来,集群至少需要3台,而且集群的数量一般都奇数,是因为内部的选举机制)
克隆之后就是修改克隆好的两台虚拟机的主机名和ip了
修改主机名:
vi /etc/sysconfig/network
将 HOSTNAME= **** 改为 HOSTNAME=zookeeper1(这里你可以改为你想要的主机名)
下文我的主机名分别为 zookeeper1、zookeeper2、zookeeper3(因为之前我已经搭建过zookeepr集群环境,所以主机名就懒的改了)
修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static (这儿改为static,也就是静态ip,负责重启虚拟机ip地址可能就会变)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9624e7ae-2a9d-4ba5-a20a-902971af602a
DEVICE=ens33
ONBOOT=yes (这儿改为 yes)
IPADDR=192.168.25.132 (这儿改为你自己的ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.25.1
DNS1=119.29.29.29
vi /etc/hosts
文件内,添加如下内容(具体还要看你的三台虚拟机的主机名和ip地址对应分别为,下面的只是我自己的)
192.168.25.132 zookeeper1
192.168.25.131 zookeeper2
192.168.25.128 zookeeper3
Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的
SSH是无密码登录的。
1、 在zookeeper1上生成公钥
ssh-keygen -t rsa
一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh
目录中会生成公钥文件(id_rsa.pub)
和私钥文件(id_rsa)
。
2、 分发公钥(分别输入,分发到三台)
ssh-copy-id zookeeper1
ssh-copy-id zookeeper2
ssh-copy-id zookeeper3
3、 分别设置zookeeper2、zookeeper3到其他机器的无密钥登录
同样的在zookeeper2、zookeeper3上生成公钥和私钥后,将公钥分发到三台机器上。
到这儿,三台虚拟机的hadoop环境已经搭建好了,集群也已经创建好了
三台主机都 进入到 /usr/local/hadoop 目录下
在zookeeper1主机中分别输入
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
在zookeeper2主机中输入
sbin/hadoop-daemon.sh start datanode
在zookeeper3主机中输入
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start secondarynamenode
在zookeeper2中分别输入
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
在zookeeper1中输入
sbin/yarn-daemon.sh start nodemanager
在zookeeper3中输入
bin/yarn-daemon.sh start nodemanager
sbin/yarn-daemon.sh start secondarynamenode
输入 jps
看看是否和 2.服务器功能规划 对应的服务一样
查看HDFS Web页面
http://192.168.25.128:50090/
查看YARN Web 页面
http://192.168.25.132:9870/
至此,hadoop集群搭建完毕!!!
当然,以上只是我自己的搭建过程,相信会有很多人在搭建过程中遇到各种各样的问题,欢迎大家留言
我会尽我所能,尽量帮大家解决....
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步