启动Hadoop集群 namenode 未启动 检查日志和xml配置 原因 java 版本太高
启动失败:
1 2 3 4 5 6 7 8 9 10 11 12 | [root@hadoop106 ~]# shells/jps.sh ==== jps 106 === 17086 DataNode 16942 NameNode 17582 Jps ==== jps 107 === 16466 DataNode 17017 Jps ==== jps 108 === 16308 SecondaryNameNode 16550 Jps 16185 DataNodeb |
hadoop version
Hadoop 3.1.3
查看日志:cd /opt/module/hadoop/logs
vim hadoop-root-datanode-hadoop106.log
查找关键词:/SHUTDOWN
n上一个 N下一个
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: RECEIVED SIGNAL 15
vim hadoop-root-namenode-hadoop106.log
NMWebapps failed to start.
解决:将 /etc/profile.d/my_env.sh 中的 java 环境变量 从 11 变为 1.8 即可
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export JAVA_VERSION=8
export PATH=$PATH:$JAVA_HOME/bin
用户查看 hdfs 浏览器地址栏:hadoop106:9870 内部端口 8020
============???===shell 脚本 ${parameter:offset:length}===???===========
查看xml配置
cd /opt/module/hadoop/etc/hadoop
ls *.xml
vim core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop106:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop/data</value> </property> <!--使用HiveServer2 and Beeline模式运行时,启动好HiveServer后运行 beeline -u jdbc:hive2://localhost:10000 -n root 连接server时出现 java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User root is not allowed to impersonate anonymous 错误。故配置:--> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <!--Hadoop.proxyuser.root.hosts配置项名称中root部分为报错User:* 中的用户名部分 例如User: zhaoshb is not allowed to impersonate anonymous则需要将xml变更为如下格式--> <property> <name>hadoop.proxyuser.zhaoshb.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.zhaoshb.groups</name> <value>*</value> </property> <!--lzo 编码 压缩--> <property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> </configuration>
vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- nn web 端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop106:9870</value> </property> <!-- 2nn web 端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop108:9868</value> </property> <!-- <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/module/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/module/hadoop/tmp/dfs/data</value> </property> --> <!--HDFS存储 多目录--> <!-- <property> <name>dfs.datanode.data.dir</name> <value>file:///dfs/data1,file:///hd2/dfs/data2,file:///hd3/dfs/data3,file:///hd4/dfs/data4</value> </property> --> <!--HDFS参数调优 hdfs-site.xml NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。 对于大集群或者有大量客户端的集群来说,通常需要增大参数dfs.namenode.handler.count的默认值10。 System.out.println(20*Math.log(3));==21--> <property> <name>dfs.namenode.handler.count</name> <value>21</value> </property> </configuration>
vim mapred-site.xml
<configuration> <!-- 指定 mr 框架为 yarn 方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <!--<value>yarn-tez</value>--> <!-- <final>true</final>--> </property> <!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop106:10020</value> </property> <!-- 历史服务器 web 端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop106:19888</value> </property> <!-- 你当前装的hadoop的地址 --> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value> </property> <!--Hadoop 配置调优处理--> <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1024M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3072</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property> </configuration>
vim yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <!-- 指定 MR 走 shuffle --> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定 ResourceManager 的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop107</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP RED_HOME</value> </property> <!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop106:19888/jobhistory/logs</value> </property> <!-- 设置日志保留时间为 7 天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!--Hive查询时,报错java.lang.OutOfMemoryError: Java heap space-这种情况属于JVM堆内存溢出了,在yarn-site.xml文件中添加如下代码--> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>20480</value> </property> <!-- <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx1024m</value> </property> --> <!--NodeManager内存和服务器实际内存配置尽量接近,如服务器有128g内存,但是NodeManager默认内存8G,不修改该参数最多只能用8G内存。NodeManager使用的CPU核数和服务器CPU核数尽量接近。 ①yarn.nodemanager.resource.memory-mb NodeManager使用内存数 ②yarn.nodemanager.resource.cpu-vcores NodeManager使用CPU核数--> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>20480</value> </property> </configuration>
vim hadoop-env.sh
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术