当前位置: 首页 > news >正文

flink 中配置hadoop 遇到问题解决

下面是一些常用的 yarn-session 参数说明及其使用场景:

基本参数

  • -n--container <arg>: 设置要启动的容器数量(即 TaskManager 的数量)。例如:-n 4 表示启动 4 个 TaskManager。
  • -jm--jobManagerMemory <arg>: JobManager 的内存大小,单位为 MB。例如:-jm 1024
  • -tm--taskManagerMemory <arg>: 每个 TaskManager 的内存大小,单位为 MB。例如:-tm 4096
  • -s--slots <arg>: 每个 TaskManager 的 Slot 数量。Slots 决定了 TaskManager 可以并行执行的任务数。例如:-s 8
  • -d--detached: 以后台模式运行 Flink YARN session。这对于长时间运行的 Flink 集群很有用。
  • -nm--name <arg>: 给你的应用程序命名,在 YARN ResourceManager UI 中显示。例如:-nm myFlinkApp
  • -jm--jobManagerMemory <arg>: 设置 JobManager 的堆内存大小,默认单位是 MB。例如:-jm 1024m
  • -yD <property=value>: 动态属性设置,允许你覆盖默认配置或指定额外的配置选项。例如:-yD yarn.applicationMaster.vcores=2

资源相关参数

  • -yjm--yarnjobManagerMemory <arg>: 设置 YARN 环境下 JobManager 的内存大小。例如:-yjm 1024m
  • -ytm--yarntaskManagerMemory <arg>: 设置 YARN 环境下 TaskManager 的内存大小。例如:-ytm 4096m
  • -yqu--yarnqueue <arg>: 指定 YARN 队列名称来提交应用。例如:-yqu default
  • -yst--yarnstreaming: 启动 Flink YARN session 在流模式下。
  • -yD <property=value>: 设置动态属性,比如可以用来调整 vCores (yarn.container.vcores) 或者其他特定于 YARN 的配置。

其他参数

  • -z--zookeeperNamespace <arg>: 使用 Zookeeper 命名空间进行高可用性设置。
  • -yd--yarndetached: 在 YARN 上以后台模式启动 Flink 集群。
  • -q--query: 查询已有的 Flink YARN session。

这里是一个启动 Flink YARN session 的例子,其中包含了一些基本和资源相关的参数:

Error: Could not find or load main classorg.apache.zookeeper.ZooKeeperMain

zookeeper 的lib 目录为空

Caused by: org.apache.flink.configuration.IllegalConfigurationException: The number of requested virtual cores for application master 1 exceeds the maximum number of virtual cores 0 available in the Yarn Cluster.

一、常见配置文件与是否需要重启

修改的配置文件配置项示例是否需要重启说明
core-site.xmlfs.defaultFShadoop.tmp.dir✅ 是影响全局行为,如默认文件系统和临时目录
hdfs-site.xmldfs.replicationdfs.block.size❌ 否(部分生效)新文件会使用新配置,旧文件不变
hdfs-site.xmldfs.namenode.name.dirdfs.datanode.data.dir✅ 是数据存储路径变更必须重启
hdfs-site.xmldfs.ha.automatic-failover.enabled✅ 是HA 相关核心配置变更
yarn-site.xmlyarn.nodemanager.resource.memory-mb✅ 是NodeManager 资源配置变更需重启
yarn-site.xmlyarn.resourcemanager.scheduler.class✅ 是调度器类型变更需重启 RM
mapred-site.xmlmapreduce.task.timeout❌ 否任务级别参数,可在作业中动态设置
hadoop-env.sh / yarn-env.sh内存、JVM 参数等✅ 是JVM 参数在进程启动时加载,需重启
workers / slaves 文件增删 DataNode/NodeManager 节点❌ 否(新增节点需手动启动)不影响现有节点

1.  设置 vcore

<property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value> <!-- 至少设置为 1 -->
</property><property><name>yarn.nodemanager.resource.memory-mb</name><value>8192</value>
</property><property><name>yarn.scheduler.maximum-allocation-vcores</name><value>4</value></property>

原因一:ResourceManager 没有正常运行或处于 standby 状态

# 查看 ResourceManager 状态 yarn rmadmin -getServiceState rm1

# 强制切换为 active yarn rmadmin -transitionToActive --forcemanual rm1

echo $YARN_CONF_DIR ls $YARN_CONF_DIR

core-site.xml
hdfs-site.xml
yarn-site.xml
capacity-scheduler.xml

2. nodeManager 有问题,比如nodeManager 的节点目录不存在

# 重启 NodeManager

yarn-daemon.sh stop nodemanager
yarn-daemon.sh start nodemanager

2. 确认 ResourceManager 正常运行, 并且不是standby

hdfs haadmin -transitionToActive --forcemanual nn2
# 查看当前状态
hdfs haadmin -getServiceState nn1   # 输出 standby
hdfs haadmin -getServiceState nn2   # 输出 active# 切换 nn1 为 active
hdfs haadmin -transitionToActive --forcemanual nn1
hdfs namenode -bootstrapStandby# 再次确认状态
hdfs haadmin -getServiceState nn1   # 应该是 active
hdfs haadmin -getServiceState nn2   # 应该是 standby
hdfs dfsadmin -saveNamespace
hadoop-daemon.sh start zkfc
hadoop-daemon.sh start namenode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh restart datanode
start-dfs.sh
stop-dfs.sh
stop-yarn.sh
start-yarn.sh
hadoop-daemon.sh start journalnode
yarn-daemon.sh restart nodemanager
yarn node -list -showDetails
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh start resourcemanager
yarn-daemon.sh stop nodemanager
yarn-daemon.sh start nodemanager
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn rmadmin -transitionToActive --forcemanual rm1
yarn rmadmin -refreshQueuesstate.checkpoints.dir: hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/savepoints
high-availability.storageDir: hdfs:///flink/ha/

3. 确认使用容量调度器 

<configuration><!-- 启用ResourceManager高可用性 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定集群唯一ID --><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-cluster</value></property><!-- 定义ResourceManager节点ID --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 配置ResourceManager节点的主机名 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop-001</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop-002</value></property><!-- 指定ZooKeeper地址 --><property><name>yarn.resourcemanager.zk-address</name><value>hadoop-001:2181,hadoop-002:2181,hadoop-003:2181</value></property><!-- 配置NodeManager辅助服务(如MapReduce Shuffle) --><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><!-- 设置NodeManager日志和临时存储目录 --><property><name>yarn.nodemanager.log-dirs</name><value>/var/log/hadoop-yarn/nodemanager</value></property><property><name>yarn.nodemanager.local-dirs</name><value>/var/hadoop/yarn/local</value></property><!-- 配置资源分配(内存和CPU) --><property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>8192</value></property><property><name>yarn.scheduler.minimum-allocation-vcores</name><value>1</value></property><property><name>yarn.scheduler.maximum-allocation-vcores</name><value>4</value></property><!-- 队列管理(示例:Capacity Scheduler) --><property><name>yarn.scheduler.capacity.root.flink.capacity</name><value>30</value></property><property><name>yarn.scheduler.capacity.root.flink.maximum-capacity</name><value>60</value></property><property><name>yarn.scheduler.capacity.default.flink.capacity</name><value>30</value></property><property><name>yarn.scheduler.capacity.default.flink.maximum-capacity</name><value>60</value></property>
</configuration>
<!-- 必须定义 root 下有哪些队列 -->
<property><name>yarn.scheduler.capacity.root.queues</name><value>default,flink</value><description>根队列下的子队列</description>
</property><!-- NodeManager 可用 CPU 核心数 -->
<property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value>
</property><!-- 单个容器最大可申请 vCores -->
<property><name>yarn.scheduler.maximum-allocation-vcores</name><value>4</value>
</property><!-- 启用 CapacityScheduler -->
<property><name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property><!-- flink 队列容量 -->
<property><name>yarn.scheduler.capacity.root.flink.capacity</name><value>30</value>
</property>
<property><name>yarn.scheduler.capacity.root.flink.maximum-capacity</name><value>60</value>
</property><!-- default 队列容量 -->
<property><name>yarn.scheduler.capacity.root.default.capacity</name><value>30</value>
</property>
<property><name>yarn.scheduler.capacity.root.default.maximum-capacity</name><value>60</value>
</property>

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=EXECUTE, inode="/user":hadoop:supergroup:drwx------ at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:506) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:422) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:333) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermissionWithContext(FSPermissionChecker.java:370) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:240) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:713) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1892) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1910) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.resolvePath(FSDirectory.java:727) at org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getFileInfo(FSDirStatAndListingOp.java:112) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3350) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1208) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:1042) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:604) at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:572) at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:556) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1093) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1043) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:971) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2976) at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1612) at org.apache.hadoop.ipc.Client.call(Client.java:1558) at org.apache.hadoop.ipc.Client.call(Client.java:1455) at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:242) at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:129) at com.sun.proxy.$Proxy29.getFileInfo(Unknown Source) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:965) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359) at com.sun.proxy.$Proxy30.getFileInfo(Unknown Source) at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1739)

hadoop fs -chmod -R 777 /user
http://www.dtcms.com/a/278613.html

相关文章:

  • 用Python向PDF添加文本:精确插入文本到PDF文档
  • vue3+uniapp 使用vue-plugin-hiprint中实现打印效果
  • Triton Inference Server 架构与前后处理方案梳理
  • 打破空间边界!Nas-Cab用模块化设计重构个人存储逻辑
  • JAVA进阶--JVM
  • 设备发出、接收数据帧的工作机制
  • 无人机迫降模式模块运行方式概述!
  • 掉线监测-tezos rpc不能用,改为残疾网页监测
  • .net winfrom 获取上传的Excel文件 单元格的背景色
  • 深入浅出Kafka Producer源码解析:架构设计与编码艺术
  • 创客匠人:创始人 IP 打造的破局点,藏在 “小而精” 的需求里
  • React源码3:update、fiber.updateQueue对象数据结构和updateContainer()中enqueueUpdate()阶段
  • 分布式系统中设计临时节点授权的自动化安全审计
  • postgreSQL的sql语句
  • 时序预测 | Pytorch实现CNN-LSTM-KAN电力负荷时间序列预测模型
  • 2025 春秋杯夏季个人挑战赛 Web
  • lesson13:Python的datetime模块
  • 登录校验与异常处理(web后端笔记第三期)
  • NAT原理与实验指南:网络地址转换技术解析与实践
  • 中国AI应用“三分天下”:国企成主力、中小企偏订阅、C端仍在观望
  • 使用axios向服务器请求信息并渲染页面
  • TCP心跳机制详解
  • 【Linux系统】进程切换 | 进程调度——O(1)调度队列
  • 如何在服务器上运行一个github项目
  • VMware 虚拟机 Ubuntu 无法主机与虚拟机之间复制粘贴的详细解决方案
  • ZLMediaKit流媒体服务器:不用docker -java源码部署Linux问题处理
  • day20 力扣235. 二叉搜索树的最近公共祖先 力扣701.二叉搜索树中的插入操作 力扣450.删除二叉搜索树中的节点
  • 8:从USB摄像头把声音拿出来--ALSA大佬登场!
  • Bash常见条件语句和循环语句
  • rk3588平台USB 3.0 -OAK深度相机适配方法