第1章Hadoop集群搭建 Ver1.6-20230921

Imagemap
第1章Hadoop集群搭建
Ver1.6-20230921任务前言学习目标(1)掌握安装配置虚拟机。(2)掌握如何在本地和Linux虚拟机中安装JDK。(3)掌握搭建Hadoop完全分布式集群环境。任务背景集群环境分类单机版一台机器上运行Hadoop伪分布式一台单机上模拟组建的多节点集群完全分布式是在多台单机上组建的分布式集群任务指导http://bigdata.hddly.cn/b00101/c01.html学习视频在笔记本上安装hadoop3.x环境概述与环境准备http://i.hddly.cn/media/G5dykd0RWL.mp4安装及创建虚拟机http://i.hddly.cn/media/HUSTaLf3ok.mp4http://i.hddly.cn/media/IrlUMiUIuu.mp4配置虚拟机http://i.hddly.cn/media/MDQuzpBM4A.mp4http://i.hddly.cn/media/rUvi0fQnOj.mp4虚拟机安装Javahttp://i.hddly.cn/media/SiF5MekLLr.mp4虚拟机安装Hadoop集群配置主机masterhttp://i.hddly.cn/media/aTj3yJ6zTb.mp4http://i.hddly.cn/media/rCYroeQ4Oy.mp4克隆从机slavehttp://i.hddly.cn/media/krf7IlnGXo.mp4配置SSH免密码登录http://i.hddly.cn/media/3uGG8pOopw.mp4复制文件和配置时间同步服务http://i.hddly.cn/media/93HBaY5MyQ.mp4启动关闭监控集群http://i.hddly.cn/media/DH440uBnLH.mp4VMware上安装Hadoop3.x集群环境笔记本配置内存,16G硬盘,500GCPU,4核8处理器,2.1GHz虚拟机配置主机master内存:4G处理器:分配4处理器,每处理器2核硬盘SATA:48G网络适配器: NAT从机slave内存:2G处理器: 分配2处理器,每处理器2核硬盘SATA:48G网络适配器:NAT网络配置主机master192.168.137.100从机slave:192.168.137.101192.168.137.102192.168.137.103安装及配置虚拟机软件准备centos7https://mirrors.aliyun.com/centos/7.9.20 ...crt工具http://i.hddly.cn/b37066/file/crt.rarvmwarehttp://i.hddly.cn/b37066/file/wmware10.r ...Hadoop(建好虚拟机后在linux下载)wget https://mirrors.aliyun.com/apache/h ...wmware安装与Linux安装安装WMWare Workstation10,注册配置wmware的虚拟网络编辑->虚拟网络编辑器添加网络->选择Nat模式->NAT设置网关:192.168.137.2选中:将主机虚拟适配器连接到此网络
选中:使用本地DHCP服务将IP地址分配给虚 ...子网IP:192.168.137.0,子网掩码:255.255.255.0在WMWare上创建虚拟机创建master主机选择默认的:典型下一步,选择安装程序光盘映像文件->浏览->前面下载的文件:
CentOS-7- ...下一步,选中Linux操作系统,CentOS64位下一步,设置虚拟机名称:CentOS_Hadoop3.x_master,选择位置下一步,最大磁盘48G,将虚拟磁盘存储为单个文件完成设置,开始安装配置master网络右击从机master->设置内存:2G处理器: 分配2处理器,每处理器2核硬盘SATA:48G网络适配器:NAT开机master安装linux选择en设置安装源设置目标disk设置root用户密码为root开机master进入linux设置固定IPvi /etc/sysconfig/network-scripts/ifcfg- ...关闭防火墙systemctl stop firewalldsystemctl disable firewalld.service配置SSHrpm -qa | grep ssh如果没有sshyum install opensshservice sshd startchkconfig --level 5 sshd onsystemctl status sshd如果没有启动sshdyum -y install openssh openssh-clients o ...yum install -y openssh-server openssh-cl ...yum install initscripts -ychkconfig --add sshdservice sshd start远程连接虚拟机crt工具crt工具安装crt工具的配置与连接虚拟机以下linux操作如无说明均在crt里操作更改hostname修改显示主机名hostnamectl set-hostname master修改网络主机名vi /etc/sysconfig/networkHOSTNAME=mastersystemctl restart network更新hosts说明:替换下面这些IP和名字后在命令行执行这些echo命令echo '' > /etc/hosts
echo '192.168.137.1 ...安装NTPyum -y install ntp虚拟机安装Java更新repoyum -y install wgetmv  /etc/yum.repos.d/CentOS-Base.repo /e ...wget -O /etc/yum.repos.d/CentOS-Base.rep ...删除旧jdkrpm -qa|grep jdk
rpm -e --nodeps 刚查出来的jd ...[root@c23 ~]# rpm -qa|grep jdk
copy-jdk- ...运行结果如图yum安装jdksudo yum install -y java-1.8.0-openjdk-1 ...检查jdkjava -version预期结果:
[root@c31 yum.repos.d]# java -vers ...查jdk路径java -verbose预期结果最后一行可能包含如下路径:
/usr/lib/jvm/java-1.8. ...yum安装jpssudo yum install -y java-1.8.0-openjdk-d ...虚拟机安装Hadoop集群配置主机master下载安装hadoop3.3.1mkdir /root/hadoop
cd /root/hadoop
wget  ...配置主机hadoop3.3.1在/usr/local/hadoop-3.3.1/etc/hadoop目录下修改 ...cd /usr/local/hadoop-3.3.1/etc/hadoopvi ./core-site.xml<configuration>
    <property>
    <name ...vi ./hadoop-env.sh说明:在文件上方空白行处添加如下添加如下两行,注意Java_home路径参考ja ...export JAVA_HOME=/usr/lib/jvm/java-1.8.0 ...export HADOOP_HOME=/usr/local/hadoop-3.3 ...vi ./hdfs-site.xml<configuration>
<property>
    <name>dfs ...vi ./mapred-site.xml<configuration>
<property>
    <name>map ...vi ./yarn-site.xml<configuration>

<!-- Site specific YARN ...vi ./yarn-env.sh说明:在文件上方空白行处添加如下:export JAVA_HOME=/usr/lib/jvm/java-1.8.0 ...vi ./workers说明:删除已有的localhost这行,然后添加本集群中所有slave从机名,如 ...slave1
slave2
slave3vi ./hadoop-env.sh说明:在刚才添加的export行后添加如下5行内容:HDFS_DATANODE_USER=root
HDFS_DATANODE_SE ...在//usr/local/hadoop-3.3.1/sbin目录下修改shell ...cd /usr/local/hadoop-3.3.1/sbinvi ./start-dfs.sh说明:在文件上方空白行处添加如下:HDFS_DATANODE_USER=root
HDFS_DATANODE_SE ...vi ./stop-dfs.sh说明:在文件上方空白行处添加如下:HDFS_DATANODE_USER=root
HDFS_DATANODE_SE ...vi ./start-yarn.sh说明:在文件上方空白行处添加如下:YARN_RESOURCEMANAGER_USER=root
HADOOP_SE ...vi ./stop-yarn.sh说明:在文件上方空白行处添加如下:YARN_RESOURCEMANAGER_USER=root
HADOOP_SE ...修改linux系统配置文件profile并使生效vi /etc/profile说明:在文件最下方export行后添加如下:export JAVA_HOME=/usr/lib/jvm/java-1.8.0 ...source /etc/profile验证hadoop相关配置是否生效hadoop version说明:如果显示如下内容说明hadoop配置生效
[root@c31 ~]# ha ...克隆从机slave从master克隆出slave主机master关机快照 wmware左侧树图->右击主机master->管理->克隆->虚拟机当前状态- ...克隆出slave1右击从机slave1->设置内存:2G处理器: 分配2处理器,每处理器2核硬盘SATA:48G网络适配器:NAT开机slave1进入linux设置固定IPvi /etc/sysconfig/network-scripts/ifcfg- ...hostname修改hostnamectl set-hostname slave1vi /etc/sysconfig/networkHOSTNAME=slave1克隆出slave2右击从机slave2->设置内存:2G处理器: 分配2处理器,每处理器2核硬盘SATA:48G网络适配器:NAT开机slave2进入linux设置固定IPvi /etc/sysconfig/network-scripts/ifcfg- ...hostname修改hostnamectl set-hostname slave2vi /etc/sysconfig/networkHOSTNAME=slave2克隆出slave3右击从机slave3->设置内存:2G处理器: 分配2处理器,每处理器2核硬盘SATA:48G网络适配器:NAT开机slave3进入linux设置固定IPvi /etc/sysconfig/network-scripts/ifcfg- ...hostname修改hostnamectl set-hostname slave3vi /etc/sysconfig/networkHOSTNAME=slave3配置SSH免密码登录说明:在主机master上执行进入root目录cd /root1,使用 ssh-keygen产生公钥与私钥对说明:运行过程中持续回车直到结束ssh-keygen -t rsa2,ssh-copy-id将公钥复制到远程机器中说明:将下方的master改为本群组的主机名,从机名,依次执行,复制过程有提示分 ...ssh-copy-id -i /root/.ssh/id_rsa.pub mas ...ssh-copy-id -i /root/.ssh/id_rsa.pub sla ...ssh-copy-id  -i /root/.ssh/id_rsa.pub sl ...ssh-copy-id  -i /root/.ssh/id_rsa.pub sl ...3,通过ssh slave 验证是否成功免密登录从机说明:,如果过程没有提示密码,直接进入slave1,则成功,然后exit退回到m ...ssh slave1
exitssh slave2
exitssh slave3
exit复制文件到从机说明:在主机master上执行scp -r /usr/lib/jvm slave1:/usr/lib/
scp ...scp -r /usr/lib/jvm slave2:/usr/lib/
scp ...scp -r /usr/lib/jvm slave3:/usr/lib/
scp ...在从机上生效 /etc/profile说明:使用ssh切换到从机,然后执行source命令,然后exit退回到mast ...ssh slave1
source /etc/profile
exitssh slave2
source /etc/profile
exitssh slave3
source /etc/profile
exit配置时间同步服务参考配置:http://www.hddly.cn:8000/article/2022/4/ ...在主机master上操作说明:,先删除/etc/ntp.conf的所有内容,然后添加下面内容,192.1 ...vi /etc/ntp.confdriftfile /var/lib/ntp/drift
restrict de ...systemctl stop ntpd
ntpdate cn.pool.ntp. ...在所有的slave从机上操作vi /etc/ntp.conf说明:,master是本集群的主机名,先删除/etc/ntp.conf的所有内容 ...driftfile /var/lib/ntp/drift
server mast ...systemctl stop ntpd
ntpdate master
servi ...启动关闭集群说明:格式和启动停止集群命令只需要在master上执行格式化主机的NameNode/usr/local/hadoop-3.3.1/bin/hdfs namenod ...启动集群命令cd /usr/local/hadoop-3.3.1/sbin/./start-dfs.sh ./start-yarn.sh mapred --daemon start historyserverjps说明:使用jps查看若有Namenode,SecondaryNameNode,R ...停止集群命令cd /usr/local/hadoop-3.3.1/sbin/./stop-yarn.sh ./stop-dfs.sh mapred --daemon stop historyserver启动节点命令master节点说明:启动节点命令可以在master上执行cd /usr/local/hadoop-3.3.1/sbin/hadoop-daemon.sh start namenodeyarn-daemon.sh start resourcemanagerslave节点说明:启动节点命令可以在slave上执行cd /usr/local/hadoop-3.3.1/sbin/./hadoop-daemon.sh start datanode./yarn-daemon.sh start nodemanager监控集群操作终端机hosts修改说明:
在windows文件中找到System32-->drivers-->et ...192.168.137.100 master
192.168.137.101 s ...HDFS监控:http://master:9870/http://slave1:9864/datanode.htmlhttp://slave2:9864/datanode.htmlYARN监控http://master:8088/clusterhttp://slave1:8042/nodehttp://slave2:8042/node日志监控http://master:19888/jobhistory测试集群测试写速度cd /opt/hadoop/share/hadoop/mapreduce/
h ...运行截图1运行结果1结果查看运行结果2023-07-21 07:05:27,971 INFO fs.TestDFSI ...查看日志文件cat TestDFSIO_results.log 
----- TestDFS ...测试读速度cd /opt/hadoop/share/hadoop/mapreduce/
r ...截图查看运行结果2023-07-21 07:17:52,772 INFO fs.TestDFSI ...常见问题JPS无法查看已经启动的Java进程信息Failed to replace a bad datanode错误信息java.io.IOException: Failed to replace a ...出现原因因为,我的集群共有3个DataNode节点,而我设置的默认副本数是3个。在执行写 ...查看自己已经存在的副本数Hadoop配置文件中的hdfs-site.xml<property>
                <name>dfs.rep ...解决报错在hdfs-site.xml 文件中添加下面几行代码<property>
             <name>dfs.client ...参考NoClassDefFoundError: 
org/sparkproject/ ...原因,hadoop的common目录下包版本冲突处理,将common新加的包移到../bak目录下,然后一个个加回来测试经测试,发现是由spark-streaming-kafka-0-10-assem ...处理:改使用spark-streaming-kafka-0-10_2.12ava.lang.ClassNotFoundException:
org.apa ...参考:https://blog.csdn.net/dkl12/article/d ...处理:添加commons-pool2-2.11.1.jarspark-token-provider-kafka-0-10_2.12-3.1 ...jedis-3.0.1.jarNoClassDefFoundError: 
com/google/common ...处理:添加guava-27.0-jre.jarfind / -name guava*
cp /opt/hadoop-3.2.1 ...java.io.IOException: All datanodes are b ...在执行spark streaming程序时,日志显示:
java.io.IOEx ...错误截图问题原因是linux机器打开了过多的文件导致。用命令ulimit -n可以发现linux默认的文件打开数目为1024查看docker主机:
[root@server4 ~]# ulimit -n
 ...问题处理增加可打开文件数
echo "* soft nofile 128000" >>  ...重启后查看
[root@server4 ~]# ulimit -n
128000 ...其它参考Byte、KB、MB、GB、
TB、PB、EB、ZB、
YB、NB、DB、CB、 ...1B (Byte字节);
1KB(Kilobyte) = 2^10 B = 10 ...退出安全模式查看hdfs safe modehadoop dfsadmin -safemode get退出hdfs safe modehadoop dfsadmin -safemode leave降低hdfs上权限给根目录加权限hdfs dfs -chmod -R 777 /HDFS块修复hdfs debug recoverLease -path 文件绝对路径  -r ...hdfs fsck -delete 文件绝对路径检测缺失块hdfs fsck -list-corruptfileblockshdfs fsck / 查看某一个文件的情况hdfs fsck /路径/文件名 -locations -blocks -fi ...手动修复hdfs debug recoverLease -path 文件位置 -retr ...删除所有损坏的块hdfs fsck / -deleteHDFS重新格式化在所有主机和从机上操作1,删除所有从机的/data/hadoop目录:
rm -rf /data/ha ...2,删除hadoop目录下的/tmp目录
rm -rf /usr/local/h ...3,删除log目录下的临时目录: 

 rm -rf /var/log/hado ...在Master主机上操作1,停止集群
stop-all.sh2,格式化hdfs
hdfs namenode -format3,启动集群
start-all.shHDFS磁盘空间不足现象:在多次上传到Hdfs和下载文件到本地时出现no space情况处理:当前Linux至少分配50G空间,但实际使用为10G,可以扩大步骤1:创建分区vda3fdisk /dev/vda
进入后输入:n
然后选择主分区:p
使用默认分区号 ...partprobe使用分区更改立即生效步骤2:创建物理卷pvcreate /dev/vda3步骤3: 扩展卷组vgextend centos /dev/vda3步骤4:扩展逻辑卷lvextend -L +10G /dev/centos/rootxfs_growfs /dev/mapper/centos-rootLiux时区设置使用cp,替换当前时区为上海时区,如有提示,输入yes进行确认
cp /usr/ ...版本历史Ver1.2-20220921增加其它参考:1)退出安全模式2)hdfs块修复Ver1.3-20220928增加其它参考:1)HDFS重新格式化Ver1.4-20221008增加:Failed to replace a bad datanodeVer1.5-20221122增加时区设置为上海时区Ver1.6-20230921修改Hdfs重新格式化
hide
第1章Hadoop集群搭建
Ver1.6-20230921
hide
VMware上安装Hadoop3.x
hide
安装及配置虚拟机
hide
wmware安装与Linux安装
hide
虚拟机安装Java
hide
虚拟机安装Hadoop集群
Arrow Link
hide
配置主机master
hide
配置主机hadoop3.3.1
hide
在/usr/local/hadoop-3.3.1/etc/hadoop目录下修改配置
hide
vi ./yarn-site.xml
leaf
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/data/tmp/logs</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>128</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
</configuration>
hide
测试集群
hide
常见问题
hide
其它参考