当前位置: 首页 > 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.lryc.cn/news/588013.html

相关文章:

  • 基于MaxCompute MaxFrame 汽车自动驾驶数据预处理最佳实践
  • WST2078 N+P 双通道 MOSFET 在蓝牙耳机中的技术适配
  • FreeSWITCH fifo模块排队并动态播放排队位置
  • 12.如何判断字符串是否为空?
  • AI驱动的软件工程(下):AI辅助的质检与交付
  • SpringBoot 整合 MyBatis-Plus
  • 智源全面开源RoboBrain 2.0与RoboOS 2.0:刷新10项评测基准,多机协作加速群体智能
  • LangChain面试内容整理-知识点16:OpenAI API接口集成
  • docker-compose 安装Alist
  • rk3588ubuntu 系统移植AIC8800D Wi-Fi6/BT5.0芯片
  • FRP Ubuntu 服务端 + MacOS 客户端配置
  • mac安装nvm执行命令报错-解决方案
  • Ubuntu服务器安装Miniconda
  • 131. Java 泛型 - 目标类型与泛型推断
  • 一般的非线性规划求解(非凸函数)
  • 深度解析:htmlspecialchars 与 nl2br 结合使用的前后端协作之道,大学毕业论文——仙盟创梦IDE
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GithubProfies(GitHub 个人资料)
  • 持续优化小程序排名,稳定获取搜索流量
  • 动态规划题解——最长递增子序列【LeetCode】记忆化搜索方法
  • 掉线监测-tezos rpc不能用,改为残疾网页监测
  • urlencode、html实体编码、unicode
  • 认识下计算机视觉中的人脸识别
  • React强大且灵活hooks库——ahooks入门实践之DOM类hook(dom)详解
  • C++-linux 5.gdb调试工具
  • LSY_C语言编程题
  • AI数据分析仪设计原理图:RapidIO信号接入 平板AI数据分析仪
  • Markdown表格列格式(加粗 / 高亮 / 复选 / 进度条 / 数值 / 货币 /…)~优雅好用的 Typora 主题与增强插件 VLOOK™
  • MFC中BOOL类型,在某些操作系统中,-1不能被识别,一般是哪些原因?
  • NAT原理与实验指南:网络地址转换技术解析与实践
  • com2tcp工具