云服务器内容精选

  • 原因分析 DataNode的数据接受器不可用。 此时DataNode会有如下日志: 2016-03-17 18:51:44,721 | WARN | org.apache.hadoop.hdfs.server.datanode.DataXceiverServer@5386659f | hadoopc1h2:25009:DataXceiverServer: | DataXceiverServer.java:158 java.io.IOException: Xceiver count 4097 exceeds the limit of concurrent xcievers: 4096 at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:140) at java.lang.Thread.run(Thread.java:745) DataNode的磁盘空间不足。 DataNode的心跳有延迟。
  • HDFS文件系统目录简介 HDFS是Hadoop的分布式文件系统(Hadoop Distributed File System),实现大规模数据可靠的分布式读写。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。 HDFS文件系统中目录结构如下表所示。 表1 HDFS文件系统目录结构 路径 类型 简略功能 是否可以删除 删除的后果 /tmp/spark2x/sparkhive-scratch 固定目录 存放Spark2x JD BCS erver中metastore session临时文件 否 任务运行失败 /tmp/sparkhive-scratch 固定目录 存放Spark2x cli方式运行metastore session临时文件 否 任务运行失败 /tmp/logs/ 固定目录 存放container日志文件 是 container日志不可查看 /tmp/carbon/ 固定目录 数据导入过程中,如果存在异常CarbonData数据,则将异常数据放在此目录下 是 错误数据丢失 /tmp/Loader-${作业名}_${MR作业id} 临时目录 存放Loader Hbase bulkload作业的region信息,作业完成后自动删除 否 Loader Hbase Bulkload作业失败 /tmp/hadoop-omm/yarn/system/rmstore 固定目录 ResourceManager运行状态信息 是 ResourceManager重启后状态信息丢失 /tmp/archived 固定目录 MR任务日志在HDFS上的归档路径 是 MR任务日志丢失 /tmp/hadoop-yarn/staging 固定目录 保存AM运行作业运行日志、作业概要信息和作业配置属性 否 任务运行异常 /tmp/hadoop-yarn/staging/history/done_intermediate 固定目录 所有任务运行完成后,临时存放/tmp/hadoop-yarn/staging目录下文件 否 MR任务日志丢失 /tmp/hadoop-yarn/staging/history/done 固定目录 周期性扫描线程定期将done_intermediate的日志文件转移到done目录 否 MR任务日志丢失 /tmp/mr-history 固定目录 存储预加载历史记录文件的路径 否 MR历史任务日志数据丢失 /tmp/hive-scratch 固定目录 Hive运行时生成的临时数据,如会话信息等 否 当前执行的任务会失败 /user/{user}/.sparkStaging 固定目录 存储SparkJDB CS erver应用临时文件 否 executor启动失败 /user/spark2x/jars 固定目录 存放Spark2x executor运行依赖包 否 executor启动失败 /user/loader 固定目录 存放loader的作业脏数据以及HBase作业数据的临时存储目录 否 HBase作业失败或者脏数据丢失 /user/loader/etl_dirty_data_dir /user/loader/etl_hbase_putlist_tmp /user/loader/etl_hbase_tmp /user/oozie 固定目录 存放oozie运行时需要的依赖库,需用户手动上传 否 oozie调度失败 /user/mapred/hadoop-mapreduce-xxx.tar.gz 固定文件 MR分布式缓存功能使用的各jar包 否 MR分布式缓存功能无法使用 /user/hive 固定目录 Hive相关数据存储的默认路径,包含依赖的spark lib包和用户默认表数据存储位置等 否 用户数据丢失 /user/omm-bulkload 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /user/hbase 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /spark2xJobHistory2x 固定目录 Spark2x eventlog数据存储目录 否 HistoryServer服务不可用,任务运行失败 /flume 固定目录 Flume采集到HDFS文件系统中的数据存储目录 否 Flume工作异常 /mr-history/tmp 固定目录 MapReduce作业产生的日志存放位置 是 日志信息丢失 /mr-history/done 固定目录 MR JobHistory Server管理的日志的存放位置 是 日志信息丢失 /tenant 添加租户时创建 配置租户在HDFS中的存储目录,系统默认将自动在“/tenant”目录中以租户名称创建文件夹。例如租户“ta1”,默认HDFS存储目录为“tenant/ta1”。第一次创建租户时,系统自动在HDFS根目录创建“/tenant”目录。支持自定义存储路径。 否 租户不可用 /apps{1~5}/ 固定目录 WebHCat使用到Hive的包的路径 否 执行WebHCat任务会失败 /hbase 固定目录 HBase数据存储目录 否 HBase用户数据丢失 /hbaseFileStream 固定目录 HFS文件存储目录 否 HFS文件丢失,且无法恢复 父主题: 使用HDFS
  • 操作场景 本章节适用于 MRS 3.x及后续版本。 HDFS集群可能出现DataNode节点间磁盘利用率不平衡的情况,比如集群中添加新数据节点的场景。如果HDFS出现数据不平衡的状况,可能导致多种问题,比如MapReduce应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率或节点磁盘无法利用等等。所以MRS集群管理员需要定期检查并保持DataNode数据平衡。 HDFS提供了一个容量均衡程序Balancer。通过运行这个程序,可以使得HDFS集群达到一个平衡的状态,使各DataNode磁盘使用率与HDFS集群磁盘使用率的偏差不超过阈值。图1和图2分别是Balance前后DataNode的磁盘使用率变化。 图1 执行均衡操作前DataNode的磁盘使用率 图2 执行均衡操作后DataNode的磁盘使用率 均衡操作时间估算受两个因素影响: 需要迁移的总数据量: 每个DataNode节点的数据量应大于(平均使用率-阈值)*平均数据量,小于(平均使用率+阈值)*平均数据量。若实际数据量小于最小值或大于最大值即存在不平衡,系统选择所有DataNode节点中偏差最多的数据量作为迁移的总数据量。 Balancer的迁移是按迭代(iteration)方式串行顺序处理的,每个iteration迁移数据量不超过10GB,每个iteration重新计算使用率的情况。 因此针对集群情况,可以大概估算每个iteration耗费的时间(可以通过执行Balancer的日志观察到每次iteration的时间),并用总数据量除以10GB估算任务执行时间。 由于按iteration处理,Balancer可以随时启动或者停止。
  • 原因分析 使用以下命令统计节点进程的线程数并排序。 ps -efT | awk '{print $2}' |sort -n |uniq -c |sort -n 执行后结果如下: 查看启动线程数最多的进程,案例中进程2346为NameNode进程,启动了5.4万线程,且持续增长。 多次打印对应进程的jstack日志,根据jstack日志信息发现,NameNode存在大量线程处于WAITING,且长期不释放。 结合以上问题分析如下:NameNode存在内置机制,根据WARN日志信息自动开启DEBUG日志,在环境中由于选择副本失败,导致一直启动Debug日志,不停地修改log4j,修改组件的log4j后进程会自动加载该配置文件,此时就会有新的线程自动产生,长时间后就会触发该告警。 出现这种情况时,将内置机制关闭,禁止自动修改日志级别即可恢复。
  • 处理步骤 登录Manager,停止HDFS服务。 在停止HDFS时,建议不要停止相关服务。 停止成功后,登录到被修改了RPC端口的Master节点。 如果两个Master节点都被修改了RPC端口,则只需登录其中一个修改即可。 执行su - omm命令切换到omm用户。 如果是安全集群,需要执行kinit hdfs命令进行认证。 执行如下命令,将环境变量脚本加载到环境中。 cd ${BIGDATA_HOME}/MRS_X.X.X/1_8_Zkfc/etc source ${BIGDATA_HOME}/MRS_X.X.X/install/ FusionInsight -Hadoop-3.1.1/hadoop/sbin/exportENV_VARS.sh 命令中的“MRS_X.X.X”和“1_8”根据实际版本而定。 加载完成后,执行如下命令,格式化Zkfc。 cd ${HADOOP_HOME}/bin ./hdfs zkfc -formatZK 格式化成功后,在Manager页面“重启”HDFS服务。 如果更改了NameNode的RPC端口,则之前安装的所有客户端都需要刷新配置文件。
  • 配置描述 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 dfs.disk.balancer.auto.enabled 是否开启自动执行HDFS DiskBalancer特性。默认值为“false”,表示关闭该特性。 false dfs.disk.balancer.auto.cron.expression HDFS 磁盘均衡操作的CRON表达式,用于控制均衡操作的开始时间。仅当dfs.disk.balancer.auto.enabled设置为true时才有效。默认值“0 1 * * 6”表示在每周六的1点执行任务。表达式的具体含义可参见表2。 0 1 * * 6 dfs.disk.balancer.max.disk.throughputInMBperSec 执行磁盘数据均衡时可使用的最大磁盘带宽。单位为MB/s,默认值为10,可依据集群的实际磁盘条件设置。 10 dfs.disk.balancer.max.disk.errors 设置能够容忍的在指定的移动过程中出现的最大错误次数,超过此阈值则移动失败。 5 dfs.disk.balancer.block.tolerance.percent 设置磁盘之间进行数据均衡操作时,各个磁盘的数据存储量与理想状态之间的差异阈值。例如,各个磁盘的理想数据存储量为1TB,此参数设置为10。那么,当目标磁盘的数据存储量达到900GB时,就认为该磁盘的存储状态就已经足够好了。取值范围[1-100]。 10 dfs.disk.balancer.plan.threshold.percent 设置在磁盘数据均衡中可容忍的两磁盘之间的数据密度阈值差。如果任意两个磁盘数据密度差值的绝对值超过了此阈值,意味着对应的磁盘应该进行数据均衡。取值范围[1-100]。 10 dfs.disk.balancer.top.nodes.number 该参数用来指定集群中需要执行磁盘数据均衡的Top N 节点。 5 表2为HDFS磁盘均衡操作的CRON表达式。使用此功能时,需要先将参数dfs.disk.balancer.auto.enabled设置为true。其它参数依据集群状况设置。 表2 CRON表达式解释 列 说明 第1列 分钟,参数值为0~59。 第2列 小时,参数值为0~23。 第3列 日期,参数值为1~31。 第4列 月份,参数值为1~12。 第5列 星期,参数值为0~6,0表示星期日。
  • 配置场景 DiskBalancer是一个在线磁盘均衡器,旨在根据各种指标重新平衡正在运行的DataNode上的磁盘数据。工作方式与HDFS的Balancer工具类似。不同的是,HDFS Balancer工具用于DataNode节点间的数据均衡,而HDFS DiskBalancer用于单个DataNode节点上各磁盘之间的数据均衡。 长时间运行的集群会因为曾经删除过大量的文件,或者集群中的节点做磁盘扩容等操作导致节点上出现磁盘间数据不均衡的现象。磁盘间数据不均衡会引起HDFS整体并发读写性能的下降或者因为不恰当的HDFS写策略导致业务故障。此时需要平衡节点磁盘间的数据密度,防止异构的小磁盘成为该节点的性能瓶颈。 本章节适用于MRS 3.x及后续版本。
  • HDFS文件系统目录简介 HDFS文件系统中目录结构如下表所示。 表1 HDFS文件系统目录结构(适用于MRS 3.x之前版本) 路径 类型 简略功能 是否可以删除 删除的后果 /tmp/spark/sparkhive-scratch 固定目录 存放Spark JDBCServer中metastore session临时文件 否 任务运行失败 /tmp/sparkhive-scratch 固定目录 存放Spark cli方式运行metastore session临时文件 否 任务运行失败 /tmp/carbon/ 固定目录 数据导入过程中,如果存在异常CarbonData数据,则将异常数据放在此目录下 是 错误数据丢失 /tmp/Loader-${作业名}_${MR作业id} 临时目录 存放Loader Hbase bulkload作业的region信息,作业完成后自动删除 否 Loader Hbase Bulkload作业失败 /tmp/logs 固定目录 MR任务日志在HDFS上的聚合路径 是 MR任务日志丢失 /tmp/archived 固定目录 MR任务日志在HDFS上的归档路径 是 MR任务日志丢失 /tmp/hadoop-yarn/staging 固定目录 保存AM运行作业运行日志、作业概要信息和作业配置属性 否 任务运行异常 /tmp/hadoop-yarn/staging/history/done_intermediate 固定目录 所有任务运行完成后,临时存放/tmp/hadoop-yarn/staging目录下文件 否 MR任务日志丢失 /tmp/hadoop-yarn/staging/history/done 固定目录 周期性扫描线程定期将done_intermediate的日志文件转移到done目录 否 MR任务日志丢失 /tmp/mr-history 固定目录 存储预加载历史记录文件的路径 否 MR历史任务日志数据丢失 /tmp/hive 固定目录 存放Hive的临时文件 否 导致Hive任务失败 /tmp/hive-scratch 固定目录 Hive运行时生成的临时数据,如会话信息等 否 当前执行的任务会失败 /user/{user}/.sparkStaging 固定目录 存储SparkJDBCServer应用临时文件 否 executor启动失败 /user/spark/jars 固定目录 存放Spark executor运行依赖包 否 executor启动失败 /user/loader 固定目录 存放loader的作业脏数据以及HBase作业数据的临时存储目录 否 HBase作业失败或者脏数据丢失 /user/loader/etl_dirty_data_dir /user/loader/etl_hbase_putlist_tmp /user/loader/etl_hbase_tmp /user/mapred 固定目录 存放Hadoop相关的文件 否 导致Yarn启动失败 /user/hive 固定目录 Hive相关数据存储的默认路径,包含依赖的spark lib包和用户默认表数据存储位置等 否 用户数据丢失 /user/omm-bulkload 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /user/hbase 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /sparkJobHistory 固定目录 Spark eventlog数据存储目录 否 HistoryServer服务不可用,任务运行失败 /flume 固定目录 Flume采集到HDFS文件系统中的数据存储目录 否 Flume工作异常 /mr-history/tmp 固定目录 MapReduce作业产生的日志存放位置 是 日志信息丢失 /mr-history/done 固定目录 MR JobHistory Server管理的日志的存放位置 是 日志信息丢失 /tenant 添加租户时创建 配置租户在HDFS中的存储目录,系统默认将自动在“/tenant”目录中以租户名称创建文件夹。例如租户“ta1”,默认HDFS存储目录为“tenant/ta1”。第一次创建租户时,系统自动在HDFS根目录创建“/tenant”目录。支持自定义存储路径。 否 租户不可用 /apps{1~5}/ 固定目录 WebHCat使用到Hive的包的路径 否 执行WebHCat任务会失败 /hbase 固定目录 HBase数据存储目录 否 HBase用户数据丢失 /hbaseFileStream 固定目录 HFS文件存储目录 否 HFS文件丢失,且无法恢复 /ats/active 固定目录 HDFS路径,用于存储活动的应用程序的timeline数据 否 删除后会导致tez任务运行失败 /ats/done 固定目录 HDFS路径,用于存储完成的应用程序的timeline数据 否 删除后会自动创建 /flink 固定目录 存放checkpoint任务数据 否 删除会导致运行任务失败 表2 HDFS文件系统目录结构(适用于MRS 3.x及之后版本) 路径 类型 简略功能 是否可以删除 删除的后果 /tmp/spark2x/sparkhive-scratch 固定目录 存放Spark2x JDBCServer中metastore session临时文件 否 任务运行失败 /tmp/sparkhive-scratch 固定目录 存放Spark2x cli方式运行metastore session临时文件 否 任务运行失败 /tmp/logs/ 固定目录 存放container日志文件 是 container日志不可查看 /tmp/carbon/ 固定目录 数据导入过程中,如果存在异常CarbonData数据,则将异常数据放在此目录下 是 错误数据丢失 /tmp/Loader-${作业名}_${MR作业id} 临时目录 存放Loader Hbase bulkload作业的region信息,作业完成后自动删除 否 Loader Hbase Bulkload作业失败 /tmp/hadoop-omm/yarn/system/rmstore 固定目录 ResourceManager运行状态信息 是 ResourceManager重启后状态信息丢失 /tmp/archived 固定目录 MR任务日志在HDFS上的归档路径 是 MR任务日志丢失 /tmp/hadoop-yarn/staging 固定目录 保存AM运行作业运行日志、作业概要信息和作业配置属性 否 任务运行异常 /tmp/hadoop-yarn/staging/history/done_intermediate 固定目录 所有任务运行完成后,临时存放/tmp/hadoop-yarn/staging目录下文件 否 MR任务日志丢失 /tmp/hadoop-yarn/staging/history/done 固定目录 周期性扫描线程定期将done_intermediate的日志文件转移到done目录 否 MR任务日志丢失 /tmp/mr-history 固定目录 存储预加载历史记录文件的路径 否 MR历史任务日志数据丢失 /tmp/hive-scratch 固定目录 Hive运行时生成的临时数据,如会话信息等 否 当前执行的任务会失败 /user/{user}/.sparkStaging 固定目录 存储SparkJDBCServer应用临时文件 否 executor启动失败 /user/spark2x/jars 固定目录 存放Spark2x executor运行依赖包 否 executor启动失败 /user/loader 固定目录 存放loader的作业脏数据以及HBase作业数据的临时存储目录 否 HBase作业失败或者脏数据丢失 /user/loader/etl_dirty_data_dir /user/loader/etl_hbase_putlist_tmp /user/loader/etl_hbase_tmp /user/oozie 固定目录 存放oozie运行时需要的依赖库,需用户手动上传 否 oozie调度失败 /user/mapred/hadoop-mapreduce-3.1.1.tar.gz 固定文件 MR分布式缓存功能使用的各jar包 否 MR分布式缓存功能无法使用 /user/hive 固定目录 Hive相关数据存储的默认路径,包含依赖的spark lib包和用户默认表数据存储位置等 否 用户数据丢失 /user/omm-bulkload 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /user/hbase 临时目录 HBase批量导入工具临时目录 否 HBase批量导入任务失败 /spark2xJobHistory2x 固定目录 Spark2x eventlog数据存储目录 否 HistoryServer服务不可用,任务运行失败 /flume 固定目录 Flume采集到HDFS文件系统中的数据存储目录 否 Flume工作异常 /mr-history/tmp 固定目录 MapReduce作业产生的日志存放位置 是 日志信息丢失 /mr-history/done 固定目录 MR JobHistory Server管理的日志的存放位置 是 日志信息丢失 /tenant 添加租户时创建 配置租户在HDFS中的存储目录,系统默认将自动在“/tenant”目录中以租户名称创建文件夹。例如租户“ta1”,默认HDFS存储目录为“tenant/ta1”。第一次创建租户时,系统自动在HDFS根目录创建“/tenant”目录。支持自定义存储路径。 否 租户不可用 /apps{1~5}/ 固定目录 WebHCat使用到Hive的包的路径 否 执行WebHCat任务会失败 /hbase 固定目录 HBase数据存储目录 否 HBase用户数据丢失 /hbaseFileStream 固定目录 HFS文件存储目录 否 HFS文件丢失,且无法恢复 父主题: 使用HDFS