华为云用户手册

  • 配置描述 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 ha.health-monitor.rpc-timeout.ms zkfc对namenode健康状态检查的超时时间。增大该参数值,可以防止出现双Active NameNode,降低客户端应用运行异常的概率。 单位:毫秒。取值范围:30000~3600000 180000 ipc.client.connect.max.retries.on.timeouts 客户端与服务端建立Socket连接超时时,客户端的重试次数。 取值范围:1~256 45 ipc.client.connect.timeout 客户端与服务端建立socket连接的超时时间。增大该参数值,可以增加建立连接的超时时间。 单位:毫秒。取值范围:1~3600000 20000
  • 配置场景 安全加密通道是HDFS中RPC通信的一种加密协议,当用户调用RPC时,用户的login name会通过RPC头部传递给RPC,之后RPC使用Simple Authentication and Security Layer(SASL)确定一个权限协议(支持Kerberos和DIGEST-MD5两种),完成RPC授权。用户在部署安全集群时,需要使用安全加密通道,配置如下参数。安全Hadoop RPC相关信息请参考: https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC
  • 配置描述 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 hadoop.rpc.protection 须知: 设置后需要重启服务生效,且不支持滚动重启。 设置后需要重新下载客户端配置,否则HDFS无法提供读写服务。 设置Hadoop中各模块的RPC通道是否加密。通道包括: 客户端访问HDFS的RPC通道。 HDFS中各模块间的RPC通道,如DataNode与NameNode间的RPC通道。 客户端访问Yarn的RPC通道。 NodeManager和ResourceManager间的RPC通道。 Spark访问Yarn,Spark访问HDFS的RPC通道。 Mapreduce访问Yarn,Mapreduce访问HDFS的RPC通道。 HBase访问HDFS的RPC通道。 说明: 用户可在HDFS组件的配置界面中设置该参数的值,设置后全局生效,即Hadoop中各模块的RPC通道的加密属性全部生效。 对RPC的加密方式,有如下三种取值: “authentication”:普通模式默认值,指数据在鉴权后直接传输,不加密。这种方式能保证性能但存在安全风险。 “integrity”:指数据直接传输,即不加密也不鉴权。 为保证数据安全,请谨慎使用这种方式。 “privacy”:安全模式默认值,指数据在鉴权及加密后再传输。这种方式会降低性能。 安全模式:privacy 普通模式:authentication
  • 配置描述 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 dfs.namenode.delegation.token.max-lifetime 该参数为服务器端参数,设置token的最大存活时间,单位为毫秒。取值范围:10000~10000000000000。 604800000 dfs.namenode.delegation.token.renew-interval 该参数为服务器端参数,设置token renew的时间间隔,单位为毫秒。取值范围:10000~10000000000000。 86400000
  • 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
  • 配置描述 在HDFS中,如果删除HDFS的文件,文件会被保存到trash空间中,不会被立即清除。被删除的文件在超过老化时间后将变为老化文件,会基于系统机制清除或用户手动清除。 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 fs.trash.interval 以分钟为单位的垃圾回收时间,垃圾站中数据超过此时间,会被删除。取值范围:1440~259200。 1440 fs.trash.checkpoint.interval 垃圾检查点间的间隔。单位:分钟。应小于等于fs.trash.interval的值。检查点程序每次运行时都会创建一个新的检查点并会移除fs.trash.interval分钟前创建的检查点。例如,系统每10分钟检测是否存在老化文件,如果发现有老化文件,则删除。对于未老化文件,则会存储在checkpoint列表中,等待下一次检查。 如果此参数的值设置为0,则表示系统不会检查老化文件,所有老化文件会被保存在系统中。 取值范围:0~fs.trash.interval。 说明: 不推荐将此参数值设置为0,这样系统的老化文件会一直存储下去,导致集群的磁盘空间不足。 60
  • 操作场景 通常一个集群上部署了多个服务,且大部分服务的存储都依赖于HDFS文件系统。当集群运行时,不同组件(例如Spark、Yarn)或客户端可能会向同一个HDFS目录不断写入文件。但HDFS系统支持的单目录文件数目是有上限的,因此用户需要提前做好规划,防止单个目录下的文件数目超过阈值,导致任务出错。 HDFS提供了“dfs.namenode.fs-limits.max-directory-items”参数设置单个目录下可以存储的文件数目。
  • 操作步骤 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面。 搜索配置项“dfs.namenode.fs-limits.max-directory-items”。 表1 参数说明 参数名称 描述 默认值 dfs.namenode.fs-limits.max-directory-items 定义目录中包含的最大条目数。 取值范围:1~6400000 1048576 设置单个HDFS目录下最大可容纳的文件数目。保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。 用户尽量将数据做好存储规划,可以按时间、业务类型等分类,不要单个目录下直属的文件过多,建议使用默认值,单个目录下约100万条。
  • 对系统的影响 修改磁盘选择策略为“节点磁盘可用空间块放置策略(org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy)”,经过测试验证,在该测试结果中,修改前后,HDFS写文件性能影响范围在3%以内。 NameNode默认的副本存储策略为: 第一副本:存放到客户端所在节点。 第二副本:远端机架的数据节点。 第三副本:存放到客户端所在节点的相同机架的不同节点。 如还有更多副本,则随机选择其它DataNode。 “节点磁盘可用空间块放置策略”的副本选择机制为: 第一个副本:存放在客户端所在DataNode(和默认的存放策略一样)。 第二个副本: 选择存储节点的时候,先挑选2个满足要求的数据节点。 比较这2个节点磁盘空间使用比例,如果磁盘空间使用率的相差小于5%,随机存放到第一个节点。 如果磁盘空间使用率相差超过5%,即有60%(由dfs.namenode.available-space-block-placement-policy.balanced-space-preference-fraction指定,默认值0.6)的概率写到磁盘空间使用率低的节点。 第三副本等其他后续副本的存储情况,也参考第二个副本的选择方式。
  • 处理步骤 您可以联系集群管理员增加各用户的句柄数。该配置为操作系统的配置,并非HBase或者HDFS的配置。建议集群管理员根据HBase和HDFS的业务量及各操作系统用户的权限进行句柄数设置。如果某一个用户需对业务量很大的HDFS进行很频繁且很多的操作,则为此用户设置较大的句柄数,避免出现以上错误。 使用root用户登录集群所有节点机器或者客户端机器的操作系统,并进入“/etc/security”目录。 执行如下命令编辑“limits.conf”文件。 vi limits.conf 新增如下内容: hdfs - nofile 32768 hbase - nofile 32768 其中“hdfs”和“hbase”表示业务中用到的操作系统用户名称。 只有root用户有权限编辑“limits.conf”文件。 如果修改的配置不生效,请确认“/etc/security/limits.d”目录下是否有针对操作系统用户的其他nofile值。这样的值可能会覆盖“/etc/security/limits.conf”中配置的值。 如果用户需要对HBase进行操作,建议将该用户的句柄数设置为“10000”以上。如果用户需要对HDFS进行操作,建议根据业务量大小设置对应的句柄数,建议不要给太小的值。如果用户需要对HBase和HDFS操作,建议设置较大的值,例如“32768”。 您可以使用如下命令查看某一用户的句柄数限制。 su - user_name ulimit -n 界面会返回此用户的句柄数限制值。如下所示: 8194
  • 操作步骤 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面。 调整HDFS写数据时的依据的磁盘选择策略参数。搜索“dfs.block.replicator.classname”参数,并将参数的值改为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”。 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
  • 配置场景 执行一个MapReduce应用会产生两种类型日志文件:作业日志和任务日志。 作业日志由MRApplicationMaster产生,详细记录了作业启动时间、运行时间,每个任务启动时间、运行时间、Counter值等信息。此日志内容被HistoryServer解析以后用于查看作业执行的详细信息。 任务日志记录了每个运行在Container中的任务输出的日志信息。默认情况下,任务日志只会存放在各NodeManager的本地磁盘上。打开日志聚合功能后,NodeManager会在作业运行完成后将本地的任务日志进行合并,写入到HDFS中。 由于MapReduce的作业日志和任务日志(聚合功能开启的情况下)都保存在HDFS上。对于计算任务量大的集群,如果不进行合理的配置对日志文件进行定期归档和删除,日志文件将占用HDFS大量内存空间,增加集群负载。 日志归档是通过Hadoop Archives功能实现的,Hadoop Archives启动的并行归档任务数(Map数)与待归档的日志文件总大小有关。计算公式为:并行归档任务数=待归档的日志文件总大小/归档文件大小。
  • 操作步骤 登录安装客户端的节点。 执行以下命令,切换到客户端安装目录。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群为安全模式,执行distcp命令的用户所属的用户组必须为supergroup组,且执行以下命令进行用户认证。普通模式集群无需执行用户认证。 kinit 组件业务用户 直接执行distcp命令。例如: hadoop distcp hdfs://hacluster/source hdfs://hacluster/target
  • 内存参数设置 以下相关参数可以参考修改集群服务配置参数进入HDFS服务全部配置页面,搜索对应参数查看。 NameNode JVM参数配置规则 NameNode JVM参数“GC_OPTS”默认值为: -Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -Djdk.tls.ephemeralDHKeySize=3072 -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djava.io.tmpdir=${Bigdata_tmp_dir} NameNode文件数量和NameNode使用的内存大小成比例关系,文件对象变化时请修改默认值中的“-Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M”。参考值如下表所示。 表4 NameNode JVM配置 文件对象数量 参考值 10,000,000 “-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M” 20,000,000 “-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G” 50,000,000 “-Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G” 100,000,000 “-Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G” 200,000,000 “-Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G” 300,000,000 “-Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G” DataNode JVM参数配置规则 DataNode JVM参数“GC_OPTS”默认值为: -Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -Djdk.tls.ephemeralDHKeySize=3072 -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djava.io.tmpdir=${Bigdata_tmp_dir} 集群中每个DataNode实例平均保存的Blocks= HDFS Block * 3/DataNode节点数,单个DataNode实例平均Block数量变化时请修改默认值中的“-Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M”。参考值如下表所示。 表5 DataNode JVM配置 单个DataNode实例平均Block数量 参考值 2,000,000 “-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M” 5,000,000 “-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G” Xmx内存值对应DataNode节点块数阈值,每GB对应500000块数,用户可根据需要调整内存值。
  • 容量规格 以下相关参数可以参考修改集群服务配置参数进入HDFS服务全部配置页面,搜索对应参数查看。 NameNode容量规格 在NameNode中,每个文件对象对应DataNode中的一个文件、目录或Block。 一个文件至少占用一个Block,默认每个Block大小为“134217728”即128MB,对应参数为“dfs.blocksize”。默认情况下一个文件小于128MB时,只占用一个Block;文件大于128MB时,占用Block数为:文件大小/128MB。目录不占用Block。 根据“dfs.blocksize”,NameNode的文件对象数计算方法如下: 表1 NameNode文件对象数计算 单个文件大小 文件对象数 小于128MB 1(对应文件)+1(对应Block)=2 大于128MB(例如128G) 1(对应文件)+1,024(对应128GB/128MB=1024 Block)=1,025 主备NameNode支持最大文件对象的数量为300,000,000(最多对应150,000,000个小文件)。“dfs.namenode.max.objects”规定当前系统可生成的文件对象数,默认值为“0”表示不限制。 DataNode容量规格 在HDFS中,Block以副本的形式存储在DataNode中,默认副本数为“3”,对应参数为“dfs.replication”。 集群中所有DataNode角色实例保存的Block总数为:HDFS Block * 3。集群中每个DataNode实例平均保存的Blocks= HDFS Block * 3/DataNode节点数。 表2 DataNode支持规格 项目 规格 单个DataNode实例支持最大Block数 5,000,000 单个DataNode实例上单个磁盘支持最大Block数 500,000 单个DataNode实例支持最大Block数需要的最小磁盘数 10 表3 DataNode节点数规划 HDFS Block数 最少DataNode角色实例数 10,000,000 10,000,000 *3/5,000,000 = 6 50,000,000 50,000,000 *3/5,000,000 = 30 100,000,000 100,000,000 *3/5,000,000 = 60
  • 背景信息 假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用Impala客户端实现A业务操作流程如下: 普通表的操作: 创建用户信息表user_info。 在用户信息中新增用户的学历、职称信息。 根据用户编号查询用户姓名和地址。 A业务结束后,删除用户信息表。 表1 用户信息 编号 姓名 性别 年龄 地址 12005000201 A 男 19 A城市 12005000202 B 女 23 B城市 12005000203 C 男 26 C城市 12005000204 D 男 18 D城市 12005000205 E 女 21 E城市 12005000206 F 男 32 F城市 12005000207 G 女 29 G城市 12005000208 H 女 30 H城市 12005000209 I 男 26 I城市 12005000210 J 女 25 J城市
  • 使用Alluxio Shell Alluxio shell包含多种与Alluxio交互的命令行操作。 要查看文件系统操作命令列表。 alluxio fs 使用ls命令列出 Alluxio 里的文件。例如列出根目录下所有文件。 alluxio fs ls / 使用copyFromLocal命令可以复制本地文件到 Alluxio 中。 alluxio fs copyFromLocal /home/test_input.txt /test_input.txt 命令执行后回显: Copied file:///home/test_input.txt to /test_input.txt 再次使用ls命令列出Alluxio中的文件,可以看到刚刚拷贝的test_input.txt文件。 alluxio fs ls / 命令执行后回显: 12 PERSISTED 11-28-2019 17:10:17:449 100% /test_input.txt 输出显示test_input.txt 文件在 Alluxio 中,各参数含义为文件的大小、是否被持久化、创建日期、Alluxio中这个文件的缓存占比、文件名。 使用cat命令打印文件的内容。 alluxio fs cat /test_input.txt 命令执行后回显: Test Alluxio
  • Alluxio中的挂载功能 Alluxio 通过统一命名空间的特性统一了对存储系统的访问。详情请参考:https://docs.alluxio.io/os/user/2.0/cn/advanced/Namespace-Management.html 这个特性允许用户挂载不同的存储系统到Alluxio命名空间中并且通过Alluxio命名空间无缝地跨存储系统访问文件。 在 Alluxio 中创建一个目录作为挂载点。 alluxio fs mkdir /mnt Successfully created directory /mnt 挂载一个已有的OBS文件系统到Alluxio(前提:给集群配置有OBS OperateAccess权限的委托,具体请参见配置存算分离集群(委托方式))。此处以obs-mrstest文件系统为例,请根据实际情况替换文件系统名。 alluxio fs mount /mnt/obs obs://obs-mrstest/data Mounted obs://obs-mrstest/data at /mnt/obs 通过Alluxio命名空间列出OBS文件系统中的文件。使用ls命令列出OBS挂载目录下的文件。 alluxio fs ls /mnt/obs 38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt 新挂载的文件和目录也可以通过Alluxio WebUI查看。 挂载完成后,通过 Alluxio 统一命名空间,可以无缝地从不同存储系统中交互数据。例如,使用ls -R命令,递归地列举出一个目录下的所有文件。 alluxio fs ls -R / 0 PERSISTED 11-28-2019 11:15:19:719 DIR /app-logs 1 PERSISTED 11-28-2019 11:18:36:885 DIR /apps 1 PERSISTED 11-28-2019 11:18:40:209 DIR /apps/templeton239440292 PERSISTED 11-28-2019 11:18:40:209 0% /apps/templeton/hive.tar.gz..... 1 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt 2 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt/obs 38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt..... 输出显示了Alluxio文件系统根目录(默认值是HDFS的根目录,即hdfs://hacluster/)中来源于挂载存储系统的所有文件。/app-logs和/apps目录在HDFS文件系统中,/mnt/obs/目录在OBS 中。
  • 用Alluxio加速数据访问 由于Alluxio利用内存存储数据,它可以加速数据的访问。例如: 上传一个文件test_data.csv(文件是一份记录了食谱的样本)到obs-mrstest文件系统的/data目录下。通过ls命令显示文件状态: alluxio fs ls /mnt/obs/test_data.csv 294520189 PERSISTED 11-28-2019 19:38:55:000 0% /mnt/obs/test_data.csv 输出显示了该文件在Alluxio中缓存占比为0%,即不在Alluxio内存中。 统计该文件中单词"milk"出现的次数,并计算耗时。 time alluxio fs cat /mnt/obs/test_data.csv | grep -c milk 52180real 0m10.765suser 0m5.540ssys 0m0.696s 第一次读取数据后会将数据放在内存中,Alluxio再次读取时可以提高访问该数据的速度。例如:在通过cat命令获取文件后,用ls命令再查看文件的状态。 alluxio fs ls /mnt/obs/test_data.csv 294520189 PERSISTED 11-28-2019 19:38:55:000 100% /mnt/obs/test_data.csv 输出显示文件已经 100% 被加载到 Alluxio 中。 再次访问该文件,统计单词“eggs”出现的次数,并计算耗时。 time alluxio fs cat /mnt/obs/test_data.csv | grep -c eggs 59510real 0m5.777suser 0m5.992ssys 0m0.592s 对比两次耗时可以看出存储在Alluxio内存中的数据,数据访问耗时明显缩短。
  • 日志级别 Flink中提供了如表3所示的日志级别。日志级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表3 日志级别 级别 描述 ERROR ERROR表示当前时间处理存在错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入Flink的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后不需要重启服务,重新下载客户端使配置生效。 也可以直接修改客户端“客户端安装目录/Flink/flink/conf/”中log4j-cli.properties、log4j.properties、log4j-session.properties文件中对应的日志级别配置项。 通过客户端提交作业时会在客户端log文件夹中生成相应日志文件,由于系统默认umask值是0022,所以日志默认权限为644;如果需要修改文件权限,需要修改umask值;例如修改omm用户umask值: 在“/home/omm/.baskrc”文件末尾添加“umask 0026”; 执行命令source /home/omm/.baskrc使文件权限生效。
  • 日志描述 日志存储路径: Flink作业运行日志:“${BIGDATA_DATA_HOME}/hadoop/data${i}/nm/containerlogs/application_${appid}/container_{$contid}”。 运行中的任务日志存储在以上路径中,运行结束后会基于Yarn的配置确定是否汇聚到HDFS目录中。 FlinkResource运行日志:“/var/log/Bigdata/flink/flinkResource”。 日志归档规则: FlinkResource运行日志: 服务日志默认20MB滚动存储一次,最多保留20个文件,不压缩。 针对MRS 3.x之前版本,Executor日志默认30MB滚动存储一次,最多保留20个文件,不压缩。 日志大小和压缩文件保留个数可以在Manager界面中配置或者修改客户端“客户端安装目录/Flink/flink/conf/”中的log4j-cli.properties、log4j.properties、log4j-session.properties中对应的配置项。 表1 FlinkResource日志列表 日志类型 日志文件名 描述 FlinkResource运行日志 checkService.log 健康检查日志。 kinit.log 初始化日志。 postinstall.log 服务安装日志。 prestart.log prestart脚本日志。 start.log 启动日志。 FlinkServer服务日志、审计日志。 FlinkServer服务日志、审计日志默认100MB滚动存储一次,服务日志最多保留30天,审计日志最多保留90天。 日志大小和压缩文件保留个数可以在Manager界面中配置或者修改客户端“客户端安装目录/Flink/flink/conf/”中的log4j-cli.properties、log4j.properties、log4j-session.properties中对应的配置项。 表2 FlinkServer日志列表 日志类型 日志文件名 描述 FlinkServer运行日志 checkService.log 健康检查日志。 checkFlinkServer.log FlinkServer健康检查日志。 localhost_access_log..yyyy-mm-dd.txt FlinkServer访问URL日志。 start_thrift_server.out thrift server启动日志。 thrift_server_thriftServer_xxx.log.last cleanup.log 安装卸载实例时的清理日志。 flink-omm-client-IP.log 作业启动日志。 flinkserver_yyyymmdd-x.log.gz 业务归档日志。 flinkserver.log 业务日志。 flinkserver---pidxxxx-gc.log.x.current GC日志。 kinit.log 初始化日志。 postinstall.log 服务安装日志。 prestart.log prestart脚本日志。 start.log 启动日志。 stop.log 停止日志。 catalina.yyyy-mm-dd.log tomcat运行日志.。 catalina.out host-manager.yyyy-mm-dd.log localhost.yyyy-mm-dd.log manager.yyyy-mm-dd.log FlinkServer审计日志 flinkserver_audit_yyyymmdd-x.log.gz 审计归档日志。 flinkserver_audit.log 审计日志。
  • 问题 在普通集群中手动创建Linux用户,并使用集群内DataNode节点执行批量导入时,为什么LoadIncrementalHFiles工具执行失败报“Permission denied”的异常? 2020-09-20 14:53:53,808 WARN [main] shortcircuit.DomainSocketFactory: error creating DomainSocketjava.net.ConnectException: connect(2) error: Permission denied when trying to connect to '/var/run/FusionInsight-HDFS/dn_socket'at org.apache.hadoop.net.unix.DomainSocket.connect0(Native Method)at org.apache.hadoop.net.unix.DomainSocket.connect(DomainSocket.java:256)at org.apache.hadoop.hdfs.shortcircuit.DomainSocketFactory.createSocket(DomainSocketFactory.java:168)at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.nextDomainPeer(BlockReaderFactory.java:804)at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.createShortCircuitReplicaInfo(BlockReaderFactory.java:526)at org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.create(ShortCircuitCache.java:785)at org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.fetchOrCreate(ShortCircuitCache.java:722)at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.getBlockReaderLocal(BlockReaderFactory.java:483)at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.build(BlockReaderFactory.java:360)at org.apache.hadoop.hdfs.DFSInputStream.getBlockReader(DFSInputStream.java:663)at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:594)at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:776)at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:845)at java.io.DataInputStream.readFully(DataInputStream.java:195)at org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.readFromStream(FixedFileTrailer.java:401)at org.apache.hadoop.hbase.io.hfile.HFile.isHFileFormat(HFile.java:651)at org.apache.hadoop.hbase.io.hfile.HFile.isHFileFormat(HFile.java:634)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.visitBulkHFiles(LoadIncrementalHFiles.java:1090)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.discoverLoadQueue(LoadIncrementalHFiles.java:1006)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.prepareHFileQueue(LoadIncrementalHFiles.java:257)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:364)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1263)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1276)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1311)at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:1333)
  • 回答 如果LoadIncrementalHFiles工具依赖的Client在集群内安装,且和DataNode在相同的节点上,在工具执行过程中HDFS会创建短路读提高性能。短路读依赖“/var/run/FusionInsight-HDFS”目录(“dfs.domain.socket.path”),该目录默认权限是750。而当前Linux用户没有权限操作该目录。 上述问题可通过执行以下方法解决: 方法一:创建新用户(推荐使用)。 通过Manager页面创建新的用户,该用户属组中默认包含ficommon组。 [root@xxx-xxx-xxx-xxx ~]# id testuid=20038(test) gid=9998(ficommon) groups=9998(ficommon) 重新执行ImportData。 方法二:修改当前用户的属组。 将该用户添加到ficommon组中。 [root@xxx-xxx-xxx-xxx ~]# usermod -a -G ficommon test[root@xxx-xxx-xxx-xxx ~]# id testuid=2102(test) gid=2102(test) groups=2102(test),9998(ficommon) 重新执行ImportData。
  • Yarn 表12 Yarn参数说明 参数 描述 默认值 是否必选 yarn.maximum-failed-containers 当TaskManager所属容器出错后,重新申请container次数。默认值为Flink集群启动时TaskManager的数量。 5 否 yarn.application-attempts Application master重启次数,次数是算在一个validity interval的最大次数,validity interval在flink中设置为akka的timeout。重启后AM的地址和端口会变化,client需要手动连接。 2 否 yarn.heartbeat-delay Application Master和YARN Resource Manager心跳的时间间隔。单位:seconds 5 否 yarn.containers.vcores 每个Yarn容器的虚拟核数。 TaskManager的slot数 否 yarn.application-master.port Application Master端口号设置,支持端口范围。 32586-32650 否
  • Pipeline 适用于MRS 3.x及之后版本。 表13 Pipeline参数说明 参数 描述 默认值 是否必选 nettyconnector.registerserver.topic.storage 设置NettySink的IP、端口及并发度信息在第三方注册服务器上的路径。建议用户使用ZooKeeper进行存储。 /flink/nettyconnector 否,当使用pipeline特性为必选 nettyconnector.sinkserver.port.range 设置NettySink的端口范围。 28444-28843 否,当使用pipeline特性为必选 nettyconnector.ssl.enabled 设置NettySink与NettySource之间通信是否配置SSL加密。其中加密密钥以及加密协议等请参见SSL。 false 否,当使用pipeline特性为必选 nettyconnector.message.delimiter 用来配置nettysink发送给nettysource消息的分隔符,长度为2-4个字节,不可包含“\n”, “ ”, “#” 。 默认使用“$_” 否,当使用pipeline特性为必选
  • State Backend 表8 State Backend参数说明 参数 描述 默认值 是否必选 state.backend.fs.checkpointdir 当backend为filesystem时的路径,路径必须能够被JobManager访问到,本地路径只支持local模式,集群模式下请使用HDFS路径。 hdfs:///flink/checkpoints 否 state.savepoints.dir Flink用于恢复和更新作业的保存点存储目录。当触发保存点的时候,保存点元数据信息将会保存到该目录中。 hdfs:///flink/savepoint 安全模式下必配 restart-strategy 默认重启策略,用于未指定重启策略的作业: fixed-delay failure-rate none none 否 restart-strategy.fixed-delay.attempts fixed-delay策略重试次数。 作业中开启了checkpoint,默认值为Integer.MAX_VALUE。 作业中未开启checkpoint,默认值为3。 否 restart-strategy.fixed-delay.delay fixed-delay策略重试间隔时间。单位:ms/s/m/h/d。 作业中开启了checkpoint,默认值是10 s。 作业中未开启checkpoint,默认值和配置项akka.ask.timeout的值一致。 否 restart-strategy.failure-rate.max-failures-per-interval 故障率策略下作业失败前给定时间段内的最大重启次数。 1 否 restart-strategy.failure-rate.failure-rate-interval failure-rate策略重试时间。单位:ms/s/m/h/d。 60 s 否 restart-strategy.failure-rate.delay failure-rate策略重试间隔时间。单位:ms/s/m/h/d。 默认值和akka.ask.timeout配置值一样。可参考Distributed Coordination (via Akka)。 否
  • File Systems 表7 File Systems参数说明 参数 描述 默认值 是否必选 fs.overwrite-files 文件输出写操作是否默认覆盖已有文件。 false 否 fs.output.always-create-directory 当文件写入程序的并行度大于1时,输出文件的路径下会创建一个目录,并将不同的结果文件(每个并行写程序任务)放入该目录。 设置为true,那么并行度为1的写入程序也将创建一个目录并将一个结果文件放入其中。 设置为false,则并行度为1的写入程序将直接在输出路径中创建文件,而不再创建目录。 false 否
  • Kerberos-based Security 表9 Kerberos-based Security参数说明 参数 描述 默认值 是否必选 security.kerberos.login.keytab 该参数为客户端参数,keytab路径。 根据实际业务配置 是 security.kerberos.login.principal 该参数为客户端参数,如果keytab和principal都设置,默认会使用keytab认证。 根据实际业务配置 否 security.kerberos.login.contexts 该参数为服务器端参数,flink生成jass文件的contexts。 Client、KafkaClient 是
  • HA 表10 HA参数说明 参数 描述 默认值 是否必选 high-availability HA模式,是启用HA还是非HA模式。当前支持两种模式: none,只运行单个jobManager,jobManager的状态不进行Checkpoint。 ZooKeeper。 非YARN模式下,支持多个jobManager,通过选举产生leader。 YARN模式下只存在一个jobManager。 zookeeper 否 high-availability.zookeeper.quorum ZooKeeper quorum地址。 自动配置 否 high-availability.zookeeper.path.root Flink在ZooKeeper上创建的根目录,存放HA模式必须的元数据。 /flink 否 high-availability.storageDir 存放state backend中JobManager元数据,ZooKeeper只保存实际数据的指针。 hdfs:///flink/recovery 否 high-availability.zookeeper.client.session-timeout ZooKeeper客户端会话超时时间。单位:ms。 60000 否 high-availability.zookeeper.client.connection-timeout ZooKeeper客户端连接超时时间。单位:ms。 15000 否 high-availability.zookeeper.client.retry-wait ZooKeeper客户端重试等待时间。单位:ms。 5000 否 high-availability.zookeeper.client.max-retry-attempts ZooKeeper客户端最大重试次数。 3 否 high-availability.job.delay 当jobManager恢复后重启job的延迟时间。 仅适用于MRS 3.x及之后版本。 默认值和akka.ask.timeout配置值保持一致 否 high-availability.zookeeper.client.acl 设置ZooKeeper节点的ACL (open creator),按照集群的安全模式自动配置。设置ACL选项请参考:https://zookeeper.apache.org/doc/r3.5.1-alpha/zookeeperProgrammers.html#sc_BuiltinACLSchemes。 安全模式:creator 非安全模式:open 是 zookeeper.sasl.disable 基于SASL认证的使能开关,按照集群的安全模式自动配置:。 安全模式:false 非安全模式:true 是 zookeeper.sasl.service-name 如果ZooKeeper服务端配置了不同于“ZooKeeper”的服务名,可以设置此配置项。 如果客户端和服务端的服务名不一致,认证会失败。 zookeeper 是
  • SSL 表4 SSL参数说明 参数 描述 默认值 是否必选 备注 security.ssl.internal.enabled 内部通信SSL总开关,按照集群的安全模式自动配置。 安全模式:true 普通模式:false 是 仅MRS 3.x之前版本 security.ssl.internal.keystore Java keystore文件。 - 是 security.ssl.internal.keystore-password keystore文件解密密码。 - 是 security.ssl.internal.key-password keystore文件中服务端key的解密密码。 - 是 security.ssl.internal.truststore truststore文件包含公共CA证书。 - 是 security.ssl.internal.truststore-password truststore文件解密密码。 - 是 security.ssl.rest.enabled 外部通信SSL总开关,按照集群的安全模式自动配置。 安全模式:true 普通模式:false 是 security.ssl.rest.keystore Java keystore文件。 - 是 security.ssl.rest.keystore-password keystore文件解密密码。 - 是 security.ssl.rest.key-password keystore文件中服务端key的解密密码。 - 是 security.ssl.rest.truststore truststore文件包含公共CA证书。 - 是 security.ssl.rest.truststore-password truststore文件解密密码。 - 是 security.ssl.protocol SSL传输的协议版本。 TLSv1.2 是 适用于所有版本 security.ssl.algorithms 支持的SSL标准算法,具体可参考java官网:http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites。 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 是 security.ssl.enabled 内部通信SSL总开关,按照集群的安装模式自动配置。 安全模式:true 普通模式:false 是 仅MRS 3.x及之后版本 security.ssl.keystore Java keystore文件。 - 是 security.ssl.keystore-password keystore文件解密密码。 - 是 security.ssl.key-password keystore文件中服务端key的解密密码。 - 是 security.ssl.truststore truststore文件包含公共CA证书。 - 是 security.ssl.truststore-password truststore文件解密密码。 - 是
共100000条