Hadoop(一)集群VMware搭建@你宝爷

tech2023-10-31  105

Hadoop集群搭建

一、前期准备

机器名IPhadoop11192.168.1.11hadoop12192.168.1.12hadoop13192.168.1.13

1.使用VMvare新建hadoop11

1)新建虚拟机,选择光盘映像文件位置

2)选择系统为linux,Cent OS7

3)设置虚拟机名称为hadoop11,选择存储位置,注意:路径最后一层起名hadoop11,方便系统管理

4)设置磁盘大小为40G

5)编辑虚拟机设置,配置内存和处理器,这里根据实际需要配置即可,点击开启此虚拟机,进行安装

Ctrl+Alt:呼出鼠标

6)点击安装分区,选择完成

7)设置root密码为hadoop

8)等待安装完成后,点击重启即可

2.配置hadoop11网络

1)用root用户登录hadoop11

2)编辑配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

#新增如下内容 IPADDR=192.168.1.11 #本机ip GATEWAY=192.168.1.2 #网关 NETMASK=255.255.255.0 DNS1=114.114.114.114 #修改如下内容 BOOTPROTO=static #静态ip ONBOOT=yes

3)重启网卡

#重启网卡 systemctl restart network #查看本机ip ip addr

4)设置hadoop11为NAT模式,hadoop11与VMware的NAT配置必须在同一网段下,192.168.1.XXX

3.配置VMware网络

本次搭建使用NAT模式网络:同一台机器互相可以访问,局域网下无法直接访问

1)编辑–>虚拟网络编辑器,选择Vmnet8,NAT模式

​ 设置子网、子网掩码

2)DHCP设置

​ 设置可用ip范围

3)NAT设置

​ 设置网关

4.配置PC机虚拟网卡VMnet8 IPv4

​ 注意网关和DNS服务器的配置

5.验证网络

1)检查hadoop11是否可以联网

ping www.baidu.com

2)hadoop11和PC机是否可相互访问

①hadoop11–>PC

ping 192.168.XXX.XXX #本地PC的ip

②PC–>hadoop11

ping 192.168.1.11

6.使用SSH工具访问hadoop11

7.安装常用的插件

yum install -y epel-release yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

8.修改机器名与映射

#1)更改本机名 sudo hostnamectl --static set-hostname hadoop11 #重启或再次启动机器后生效 #2)增加机器名与ip的映射关系 sudo vim /etc/hosts #新增如下内容 192.168.1.11 hadoop11 192.168.1.12 hadoop12 192.168.1.13 hadoop13 #3)增加PC机的机器名与ip映射,便于PC通过机器名直接访问虚拟机 编辑C:\Windows\System32\drivers\etc下的hosts文件 #新增如下内容 192.168.1.11 hadoop11 192.168.1.12 hadoop12 192.168.1.13 hadoop13

9.关闭防火墙&新建用户&赋root权限

#1)关闭防火墙 sudo systemctl status firewalld #查看防火墙状态 sudo systemctl stop firewalld #关闭防火墙 sudo systemctl disable firewalld #开机不启动防火墙,等同于永久关闭防火墙 #2)新建用户 sudo useradd hduser #新建用户 sudo passwd hadoop #为新建用户设置密码为:hadoop #3)为hduser赋予root权限 visudo #通过此命令编辑/etc/sudoers,修改内容如下 ## Allow root to run any commands anywhere root ALL=(ALL) ALL #在此处新增如下内容 hduser ALL=(ALL) NOPASSWD:ALL #用sudo执行命令式不需要输入root用户的密码 su - hduser #在该用户下完成之后操作,需要使用root权限时,sudo '命令'

10.新建常用目录

#登录 hduser 用户 su - hduser sudo mkdir /opt/software sudo mkdir /opt/package #更改新建目录的所属用户和所属组 sudo chown -R hduser:hduser /opt/* #-R 递归

11.安装JDK

#1)卸载系统的JDK,未安装过可不执行 rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodep #2)#导入JDK安装包 通过MobaXterm将JDK安装包1.8导入/opt/package目录下 #3)解压JDK文件 tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/software/ #4)配置环境变量 sudo vim /etc/profile.d/my_env.sh #添加如下内容 #JAVA_HOME export JAVA_HOME=/opt/software/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin #使环境变量生效 source /etc/profile.d/my_env.sh #测试环境变量是否生效 java -version

12.安装Hadoop

#1)导入Hadoop安装包 通过MobaXterm将JDK安装包1.8导入/opt/package目录下 #2)解压安装包 tar -zxvf hadoop-3.1.3.tar.gz -C /opt/software/ #3)配置环境变量 sudo vim /etc/profile.d/my_env.sh #在文件末尾追加如下内容 #HADOOP_HOME export HADOOP_HOME=/opt/software/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin #使环境变量生效 source /etc/profile.d/my_env.sh #测试环境变量是否生效 hadoop version

二、基于VMware虚拟机NAT网络的分布式搭建

hadoop11hadoop12hadoop13HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager

1.克隆hadoop11

1)VMware左侧菜单栏右击–>管理–>克隆

​ 创建完整克隆

​ 为克隆的系统取名hadoop12

2)同理克隆hadoop11得到hadoop13

2.配置克隆机hadoop12、hadoop13

#详见:前期准备(一、2,一、8) #更改机器名 #hadoop12:hadoop12 #hadoop13:hadoop13 #更改ip #hadoop12:192.168.1.12 #hadoop13:192.168.1.13 #增加机器名与ip的映射关系 #192.168.1.11 hadoop11 #192.168.1.12 hadoop12 #192.168.1.13 hadoop13

3.配置SSH免密登录

#每台机器均需要操作如下步骤,且root用户和hduser用户下各执行一次 #生成公钥、私钥 ssh-keygen -t rsa #回车继续执行 #将公钥拷贝到要免密登录的机器 ssh-copy-id hadoop11 ssh-copy-id hadoop12 ssh-copy-id hadoop13

4.配置Haoop文件

#1)配置core-site.xml cd $HADOOP_HOME/etc/hadoop vim core-site.xml #新增文件内容如下: <configuration> <!--指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop11:9820</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/software/hadoop-3.1.3/data</value> </property> <!-- 通过web界面操作hdfs的权限 --> <property> <name>hadoop.http.staticuser.user</name> <value>hduser</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>hadoop.proxyuser.hduser.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hduser.groups</name> <value>*</value> </property> </configuration> #2)配置hdfs-site.xml vim hdfs-site.xml #新增文件内容如下: <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop13:9868</value> </property> </configuration> #3)配置yarn-site.xml vim yarn-site.xml #新增文件内容如下: <configuration> <!-- Reducer获取数据的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop12</value> </property> <!-- 环境变量通过从NodeManagers的容器继承的环境属性,对于mapreduce应用程序,除了默认值 hadoop op_mapred_home应该被添加外。属性值 还有如下--> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!-- 解决Yarn在执行程序遇到超出虚拟内存限制,Container被kill --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> </configuration> #4)配置mapred-site.xml vim mapred-site.xml #新增文件内容如下: <!-- 指定MR运行在Yarn上 --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> #5)配置workers vim workers #替换成如下内容,注意该文件内容中不允许存在空行,其他文件尽量不存在空行,避免出错 hadoop11 hadoop12 hadoop13

5.新建脚本文件目录

#创建一个目录,/opt/sh/ ,将此目录放到环境变量,用来存放Shell脚本文件(详见一、11) #配置环境变量 sudo vim /etc/profile.d/my_env.sh #在文件末尾追加如下内容 #脚本文件 export PATH=$PATH:/opt/sh #使环境变量生效 source /etc/profile.d/my_env.sh

6.同步配置文件到hadoop12、hadoop13

rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/* hduser@hadoop12:/opt/software/hadoop-3.1.3/etc/hadoop rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/* hduser@hadoop13:/opt/software/hadoop-3.1.3/etc/hadoop

7.格式化NameNode

#首次在hadoop11节点格式化NameNode hdfs namenode -format #非首次格式化之前,要停止启动的所有namenode和datanode进程,删除data和logs下的数据,再执行命令 hdfs namenode -format

三、启动集群

1.在hadoop11上一键启动hdfs

start-dfs.sh

2.在hadoop12上一键启动yarn

start-yarn.sh

3.检查是否启动成功

jps

4.可选择分别启动

#在对应机器上分别启动组件 #启动/停止HDFS组件 hdfs --daemon start/stop namenode/datanode/secondarynamenode #启动/停止YARN yarn --daemon start/stop resourcemanager/nodemanager

5.配置历史服务器

vim mapred-site.xml #<configuration>内新增如下内容 <!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop102:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop102:19888</value> </property> #hadoop11上启动历史服务器 mapred --daemon start historyserver

6.配置日志服务器

#开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager vim yarn-site.xml #<configuration>新增如下内容 <!-- 开启日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 访问路径--> <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property> <!-- 保存的时间7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> #关闭NodeManager 、ResourceManager和HistoryServer stop-yarn.sh #在hadoop12上执行: mapred --daemon stop historyserver #在hadoop11上执行 #启动NodeManager 、ResourceManage、Timelineserver和HistoryServer start-yarn.sh #在hadoop12上执行 yarn --daemon start timelineserver #在hadoop12上执行 mapred --daemon start historyserver #在hadoop11上执行

7.Web端查看

#1)secondarynamenode http://hadoop13:9868 #Hadoop3.0以后需要替换dfs-dust.js文件 #操作如下 cd $HADOOP_HOME/share/hadoop/hdfs/webapps/static vim dfs-dust.js Esc ,: ,set nu ,回车 #在第61行更改 #注释如下内容 //'date_tostring' : function (v) { // return moment(Number(v)).format('ddd MMM DD HH:mm:ss ZZ YYYY'); //}, #替换为如下内容: 'date_tostring' : function (v) { return new Date(Number(v)).toLocaleString(); }, #同步文件到hadoop12、hadoop13 rsync -av $HADOOP_HOME/share/hadoop/hdfs/webapps/static/* hduser@hadoop12:$HADOOP_HOME/share/hadoop/hdfs/webapps/static rsync -av $HADOOP_HOME/share/hadoop/hdfs/webapps/static/* hduser@hadoop13:$HADOOP_HOME/share/hadoop/hdfs/webapps/static #清理浏览器缓存后重新访问即可 #2)namenode http://hadoop11:9870 #3)resourcemanager http://hadoop12:8088 #4)查看历史记录和日志JobHistory http://hadoop11:19888/jobhistory

8.时间与hadoop11同步

1)hadoop11上配置

su - root #在root用户下完成以下操作 #1)在所有节点关闭ntp服务和自启动 sudo systemctl stop ntpd sudo systemctl disable ntpd #2)修改ntp配置文件 vim /etc/ntp.conf #①允许其他机器读取hadoop11时间 #restrict 192.168.1.0mask 255.255.255.0 nomodify notrap 去除以上内容注释,更改如下: restrict 192.168.1.0mask 255.255.255.0 nomodify notrap #②修改2(集群在局域网中,不使用其他互联网上的时间) server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst 为以上内容添加注释,更改如下: #server0.centos.pool.ntp.org iburst #server1.centos.pool.ntp.org iburst #server2.centos.pool.ntp.org iburst #server3.centos.pool.ntp.org iburst #③无网下读取本地时间 添加如下内容 server 127.127.1.0 fudge 127.127.1.0 stratum 10 #3)配置ntpd文件 vim /etc/sysconfig/ntpd 增加如下内容: SYNC_HWCLOCK=yes #使硬件时间与系统时间同步 #4)重新启动ntpd服务 systemctl start ntpd #5)设置ntpd服务开机启动 systemctl enable ntpd

2)hadoop12、hadoop13上分别配置

#1)配置定时任务,同步时间 crontab -e 增加如下内容: */10 * * * * /usr/sbin/ntpdate hadoop11 #测试时可更改为1,1分钟启动定时任务 #2)修改机器时间 date -s "2000-00-00 00:00:00" #3)等待定时任务启动后查看,是否同步成功 date
最新回复(0)