华为云用户手册

  • 容量规格 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
  • 配置HDFS文件和目录的权限 HDFS支持用户进行文件和目录默认权限的修改。HDFS默认用户创建文件和目录的权限的掩码为“022”,如果默认权限满足不了用户的需求,可以通过配置项进行默认权限的修改。 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 fs.permissions.umask-mode 当客户端在HDFS上创建文件和目录时使用此umask值(用户掩码)。类似于linux上的文件权限掩码。 可以使用八进制数字也可以使用符号,例如:“022” (八进制,等同于以符号表示的u=rwx,g=r-x,o=r-x),或者“u=rwx,g=rwx,o=”(符号法,等同于八进制的“007”)。 说明: 8进制的掩码,和实际权限设置值正好相反,建议使用符号表示法,描述更清晰。 022
  • 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
  • 操作步骤 登录安装客户端的节点。 执行以下命令,切换到客户端安装目录。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群为安全模式,执行distcp命令的用户所属的用户组必须为supergroup组,且执行以下命令进行用户认证。普通模式集群无需执行用户认证。 kinit 组件业务用户 直接执行distcp命令。例如: hadoop distcp hdfs://hacluster/source hdfs://hacluster/target
  • 日志级别 DBService中提供了如表2所示的日志级别。日志级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示当前时间处理存在错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。
  • 背景信息 假定用户开发一个应用程序,用于管理企业中的使用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城市
  • 回答 如果LoadIncrementalHFiles工具依赖的Client在集群内安装,且和DataNode在相同的节点上,在工具执行过程中HDFS会创建短路读提高性能。短路读依赖“/var/run/ FusionInsight -HDFS”目录(“dfs.domain.socket.path”),该目录默认权限是750。而当前Linux用户没有权限操作该目录。 上述问题可通过执行以下方法解决: 方法一:创建新用户(推荐使用)。 通过Manager页面创建新的用户,该用户属组中默认包含ficommon组。 [root@xxx-xxx-xxx-xxx ~]# id test uid=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 test uid=2102(test) gid=2102(test) groups=2102(test),9998(ficommon) 重新执行ImportData。
  • 问题 在普通集群中手动创建Linux用户,并使用集群内DataNode节点执行批量导入时,为什么LoadIncrementalHFiles工具执行失败报“Permission denied”的异常? 2020-09-20 14:53:53,808 WARN [main] shortcircuit.DomainSocketFactory: error creating DomainSocket java.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)
  • 日志级别 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使文件权限生效。
  • 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的延迟时间。 默认值和akka.ask.timeout配置值保持一致 否 high-availability.zookeeper.client.acl 设置ZooKeeper节点的ACL (open creator),按照集群的安全模式自动配置。 安全模式:creator 非安全模式:open 是 zookeeper.sasl.disable 基于SASL认证的使能开关,按照集群的安全模式自动配置:。 安全模式:false 非安全模式:true 是 zookeeper.sasl.service-name 如果ZooKeeper服务端配置了不同于“ZooKeeper”的服务名,可以设置此配置项。 如果客户端和服务端的服务名不一致,认证会失败。 zookeeper 是
  • Pipeline 表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特性为必选
  • 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 否
  • 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 是
  • File Systems 表7 File Systems参数说明 参数 描述 默认值 是否必选 fs.overwrite-files 文件输出写操作是否默认覆盖已有文件。 false 否 fs.output.always-create-directory 当文件写入程序的并行度大于1时,输出文件的路径下会创建一个目录,并将不同的结果文件(每个并行写程序任务)放入该目录。 设置为true,那么并行度为1的写入程序也将创建一个目录并将一个结果文件放入其中。 设置为false,则并行度为1的写入程序将直接在输出路径中创建文件,而不再创建目录。 false 否
  • 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)。 否
  • Network communication (via Netty) 表5 Network communication参数说明 参数 描述 默认值 是否必选 taskmanager.network.netty.num-arenas Netty内存块数。 1 否 taskmanager.network.netty.server.numThreads Netty服务器线程的数量。 1 否 taskmanager.network.netty.client.numThreads Netty客户端线程数。 1 否 taskmanager.network.netty.client.connectTimeoutSec Netty客户端连接超时。单位:s。 120 否 taskmanager.network.netty.sendReceiveBufferSize Netty发送和接收缓冲区大小。 默认为系统缓冲区大小(cat / proc / sys / net / ipv4 / tcp_ [rw] mem),在现代Linux中为4MB。单位:bytes。 4096 否 taskmanager.network.netty.transport Netty传输类型,“nio”或“epoll”。 nio 否
  • JobManager Web Frontend 表6 JobManager Web Frontend参数说明 参数 描述 默认值 是否必选 jobmanager.web.allow-access-address web访问白名单,ip以逗号隔开。只有在白名单中的ip才能访问web。 * 是 flink.security.enable 用户安装Flink集群时,需要选择“安全模式”或“普通模式”。 当选择“安全模式”,自动配置为“true”。 当选择“普通模式”,自动配置为“false”。 对于已经安装好的Flink集群,用户可以通过查看配置的值来区分当前安装的是安全模式还是普通模式。 自动配置 否 rest.bind-port web端口,支持范围:32261-32325。 32261-32325 否 jobmanager.web.history 显示“flink.security.enable”最近的job数目。 5 否 jobmanager.web.checkpoints.disable 禁用checkpoint统计。 false 否 jobmanager.web.checkpoints.history Checkpoint统计记录数。 10 否 jobmanager.web.backpressure.cleanup-interval 未访问反压记录清理周期。单位:ms。 600000 否 jobmanager.web.backpressure.refresh-interval 反压记录刷新周期。单位:ms。 60000 否 jobmanager.web.backpressure.num-samples 计算反压使用的堆栈跟踪记录数。 100 否 jobmanager.web.backpressure.delay-between-samples 计算反压的采样间隔。单位:ms 50 否 jobmanager.web.ssl.enabled web是否使用SSL加密传输,仅在全局开关security.ssl开启时有。 false 是 jobmanager.web.accesslog.enable web操作日志使能开关,日志会存放在webaccess.log中。 true 是 jobmanager.web.x-frame-options http安全头X-Frame-Options的值,可选范围为:SAMEORIGIN、DENY、ALLOW-FROM uri。 DENY 是 jobmanager.web.cache-directive web页面是否支持缓存。 no-store 是 jobmanager.web.expires-time web页面缓存过期时长。单位:ms。 0 是 jobmanager.web.access-control-allow-origin 网页同源策略,防止跨域攻击。 * 是 jobmanager.web.refresh-interval web网页刷新时间。单位:ms。 3000 是 jobmanager.web.logout-timer 配置无操作情况下自动登出时间间隔。单位:ms。 600000 是 jobmanager.web.403-redirect-url web403页面,访问如果遇到403错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.404-redirect-url web404页面,访问如果遇到404错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.415-redirect-url web415页面,访问如果遇到415错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.500-redirect-url web500页面,访问如果遇到500错误,则会重定向到配置的页面。 自动配置 是 rest.await-leader-timeout 客户端等待Leader地址的时间(以ms为单位)。 30000 否 rest.client.max-content-length 客户端处理的最大内容长度(以字节为单位)。 104857600 否 rest.connection-timeout 客户端建立TCP连接的最长时间(以ms为单位)。 15000 否 rest.idleness-timeout 连接保持空闲状态的最长时间(以ms为单位)。 300000 否 rest.retry.delay 客户端在连续重试之间等待的时间(以ms为单位)。 3000 否 rest.retry.max-attempts 如果可重试算子操作失败,客户端将尝试重试的次数。 20 否 rest.server.max-content-length 服务端处理的最大内容长度(以字节为单位)。 104857600 否 rest.server.numThreads 异步处理请求的最大线程数。 4 否 web.timeout web监控超时时间(以ms为单位)。 10000 否
  • Distributed Coordination (via Akka) 表3 Distributed Coordination参数说明 参数 描述 默认值 是否必选 akka.ask.timeout akka所有异步请求和阻塞请求的超时时间。如果Flink发生超时失败,可以增大这个值。当机器处理速度慢或者网络阻塞时会发生超时。单位:ms/s/m/h/d。 10s 否 akka.lookup.timeout 查找JobManager actor对象的超时时间。单位:ms/s/m/h/d。 10s 否 akka.framesize JobManager和TaskManager间最大消息传输大小。当Flink出现消息大小超过限制的错误时,可以增大这个值。单位:b/B/KB/MB。 10485760b 否 akka.watch.heartbeat.interval Akka DeathWatch机制检测失联TaskManager的心跳间隔。如果TaskManager经常发生由于心跳消息丢失或延误而被错误标记为失联的情况,可以增大这个值。单位:ms/s/m/h/d。 10s 否 akka.watch.heartbeat.pause Akka DeathWatch可接受的心跳暂停时间,较小的数值表示不允许不规律的心跳。单位:ms/s/m/h/d。 60s 否 akka.watch.threshold DeathWath失败检测阈值,较小的数值容易把正常TaskManager标记为失败,较大的值增加了失败检测的时间。 12 否 akka.tcp.timeout 发送连接TCP超时时间,如果经常发生满网络环境下连接TaskManager超时,可以增大这个值。单位:ms/s/m/h/d。 20s 否 akka.throughput Akka批量处理消息的数量,一次操作完后把处理线程归还线程池。较小的数值代表actor消息处理的公平调度,较大的值以牺牲调度公平的代价提高整体性能。 15 否 akka.log.lifecycle.events Akka远程时间日志开关,当需要调试时可打开此开关。 false 否 akka.startup-timeout 远程组件启动失败前的超时时间。该值需带一个时间单位(ms/s/min/h/d) 与akka.ask.timeout的值一致 否 akka.ssl.enabled Akka通信SSL开关,仅在全局开关security.ssl开启时有。 true 是 akka.client-socket-worker-pool.pool-size-factor 计算线程池大小的因子,计算公式:ceil(可用处理器*因子),计算结果限制在pool-size-min和pool-size-max之间。 1.0 否 akka.client-socket-worker-pool.pool-size-max 基于因子计算的线程数上限。 2 否 akka.client-socket-worker-pool.pool-size-min 基于因子计算的线程数下限。 1 否 akka.client.timeout 【说明】客户端超时时间。该值需带一个时间单位(ms/s/min/h/d)。 60s 否 akka.server-socket-worker-pool.pool-size-factor 【说明】计算线程池大小的因子,计算公式:ceil(可用处理器*因子),计算结果限制在pool-size-min和pool-size-max之间。 1.0 否 akka.server-socket-worker-pool.pool-size-max 基于因子计算的线程数上限。 2 否 akka.server-socket-worker-pool.pool-size-min 基于因子计算的线程数下限。 1 否
  • SSL 表4 SSL参数说明 参数 描述 默认值 是否必选 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 是 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文件解密密码。 - 是
  • Blob服务端 表2 Blob服务端参数说明 参数 描述 默认值 是否必选 blob.server.port blob服务器端口。 32456-32520 否 blob.service.ssl.enabled blob传输通道是否加密传输,仅在全局开关security.ssl开启时有。 true 是 blob.fetch.retries TaskManager从JobManager下载blob文件的重试次数。 50 否 blob.fetch.num-concurrent JobManager支持的下载blob的并发数。 50 否 blob.fetch.backlog JobManager支持的blob下载队列大小,比如下载Jar包等。单位:个。 1000 否 library-cache-manager.cleanup.interval 当用户取消flink job后,jobmanager删除HDFS上存放用户jar包的时间,单位为s。 3600 否
  • JobManager & TaskManager 表1 JobManager & TaskManager参数说明 参数 描述 默认值 是否必选 taskmanager.rpc.port TaskManager的IPC端口范围。 32326-32390 否 taskmanager.memory.segment-size 内存管理器和网络堆栈使用的内存缓冲区大小。单位:bytes。 32768 否 taskmanager.data.port TaskManager数据交换端口范围。 32391-32455 否 taskmanager.data.ssl.enabled TaskManager之间数据传输是否使用SSL加密,仅在全局开关security.ssl开启时有效。 false 否 taskmanager.numberOfTaskSlots TaskManager占用的slot数,一般配置成物理机的核数,yarn-session模式下只能使用-s参数传递,yarn-cluster模式下只能使用-ys参数传递。 1 否 parallelism.default 默认并行度,用于未指定并行度的作业。 1 否 task.cancellation.interval 两次连续任务取消操作的间隔时间。单位:ms。 30000 否 client.rpc.port Flink client端Akka system监测端口。 32651-32720 否 jobmanager.heap.size JobManager堆内存大小,yarn-session模式下只能使用-jm参数传递,yarn-cluster模式下只能使用-yjm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。 1024mb 否 taskmanager.heap.size TaskManager堆内存大小,yarn-session模式下只能使用-tm参数传递,yarn-cluster模式下只能使用-ytm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。 1024mb 否 taskmanager.network.numberOfBuffers TaskManager网络传输缓冲栈数量,如果作业运行中出错提示系统中可用缓冲不足,可以增加这个配置项的值。 2048 否 taskmanager.debug.memory.startLogThread 调试Flink内存和GC相关问题时可开启,TaskManager会定时采集内存和GC的统计信息,包括当前堆内,堆外,内存池的使用率和GC时间。 false 否 taskmanager.debug.memory.logIntervalMs TaskManager定时采集内存和GC的统计信息的采集间隔。 0 否 taskmanager.maxRegistrationDuration TaskManager向JobManager注册自己的最长时间,如果超过时间,TaskManager会关闭。 5 min 否 taskmanager.initial-registration-pause 两次连续注册的初始间隔时间。该值需带一个时间单位(ms/s/min/h/d)(比如5秒)。 时间数值和单位之间有半角字符空格。ms/s/m/h/d表示毫秒、秒、分钟、小时、天。 500 ms 否 taskmanager.max-registration-pause TaskManager注册失败最大重试间隔。单位:ms/s/m/h/d。 30 s 否 taskmanager.refused-registration-pause TaskManager注册连接被JobManager拒绝后的重试间隔。单位:ms/s/m/h/d。 10 s 否 classloader.resolve-order 从用户代码加载类时定义类解析策略,这意味着是首先检查用户代码jar(“child-first”)还是应用程序类路径(“parent-first”)。默认设置指示首先从用户代码jar加载类,这意味着用户代码jar可以包含和加载不同于Flink使用的(依赖)依赖项。 child-first 否 slot.idle.timeout Slot Pool中空闲Slot的超时时间(以ms为单位)。 50000 否 slot.request.timeout 从Slot Pool请求Slot的超时(以ms为单位)。 300000 否 task.cancellation.timeout 取消任务超时时间(以ms为单位),超时后会触发TaskManager致命错误。设置为0,取消任务卡住则不会报错。 180000 否 taskmanager.network.detailed-metrics 启用网络队列长度的详细指标监控。 false 否 taskmanager.network.memory.buffers-per-channel 每个传出/传入通道(子分区/输入通道)使用的最大网络缓冲区数。在基于信用的流量控制模式下,这表示每个输入通道中有多少信用。它应配置至少2以获得良好的性能。1个缓冲区用于接收子分区中的飞行中数据,1个缓冲区用于并行序列化。 2 否 taskmanager.network.memory.floating-buffers-per-gate 每个输出/输入门(结果分区/输入门)使用的额外网络缓冲区数。在基于信用的流量控制模式中,这表示在所有输入通道之间共享多少浮动信用。浮动缓冲区基于积压(子分区中的实时输出缓冲区)反馈来分布,并且可以帮助减轻由子分区之间的不平衡数据分布引起的背压。如果节点之间的往返时间较长和/或群集中的机器数量较多,则应增加此值。 8 否 taskmanager.network.memory.fraction 用于网络缓冲区的JVM内存的占比。这决定了TaskManager可以同时拥有多少流数据交换通道以及通道缓冲的程度。如果作业被拒绝或者收到系统没有足够缓冲区的警告,请增加此值或“taskmanager.network.memory.min”和“taskmanager.network.memory.max”。另请注意,“taskmanager.network.memory.min”和“taskmanager.network.memory.max”可能会覆盖此占比。 0.1 否 taskmanager.network.memory.max 网络缓冲区的最大内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。 1 GB 否 taskmanager.network.memory.min 网络缓冲区的最小内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。 64 MB 否 taskmanager.network.request-backoff.initial 输入通道的分区请求的最小退避。 100 否 taskmanager.network.request-backoff.max 输入通道的分区请求的最大退避。 10000 否 taskmanager.registration.timeout TaskManager注册的超时时间,在该时间内未成功注册,TaskManager将终止。该值需带一个时间单位(ms/s/min/h/d)。 5 min 否 resourcemanager.taskmanager-timeout 释放空闲TaskManager的超时(以ms为单位)。 30000 否
  • 配置参数类别介绍 本章节介绍如下参数配置: JobManager & TaskManager: JobManager和TaskManager是Flink的主要组件,针对各种安全场景和性能场景,配置项包括通信端口,内存管理,连接重试等。 Blob服务端: JobManager节点上的Blob服务端是用于接收用户在客户端上传的Jar包,或将Jar包发送给TaskManager,传输log文件等,配置项包括端口,SSL,重试次数,并发等。 Distributed Coordination (via Akka): Flink客户端与JobManager的通信,JobManager与TaskManager的通信和TaskManager与TaskManager的通信都基于Akka actor模型。相关参数可以根据网络环境或调优策略进行配置,配置项包括消息发送和等待的超时设置,akka监测机制Deathwatch等。 SSL: 当需要配置安全Flink集群时,需要配置SSL相关配置项,配置项包括SSL开关,证书,密码,加密算法等。 Network communication (via Netty): Flink运行Job时,Task之间的数据传输和反压检测都依赖Netty,某些环境下可能需要对Netty参数进行配置。对于高级调优,可调整部分Netty配置项,默认配置已可满足大规模集群并发高吞吐量的任务。 JobManager Web Frontend: JobManager启动时,会在同一进程内启动Web服务器,访问Web服务器可以获取当前Flink集群的信息,包括JobManager,TaskManager及集群内运行的Job。Web服务器参数的配置项包括端口,临时目录,显示项目,错误重定向,安全相关等。 File Systems: Task运行中会创建结果文件,支持对文件创建行为进行配置,配置项包括文件覆盖策略,目录创建等。 State Backend: Flink提供了HA和作业的异常恢复,并且提供版本升级时作业的暂停恢复。对于作业状态的存储,Flink依赖于state backend,作业的重启依赖于重启策略,用户可以对这两部分进行配置。配置项包括state backend类型,存储路径,重启策略等。 Kerberos-based Security: Flink安全模式下必须配置Kerberos相关配置项,配置项包括kerberos的keytab、principal等。 HA: Flink的HA模式依赖于ZooKeeper,所以必须配置ZooKeeper相关配置,配置项包括ZooKeeper地址,路径,安全认证等。 Environment: 对于JVM配置有特定要求的场景,可以通过配置项传递JVM参数到客户端,JobMananger,TaskManager等。 Yarn: Flink运行在Yarn集群上时,JobManager运行在Application Master上。JobManager的一些配置参数依赖于Yarn,通过配置YARN相关的配置,使Flink更好的运行在Yarn上,配置项包括yarn container的内存,虚拟内核,端口等。 Pipeline: 为适应某些场景对降低时延的需求,设计多个Job间采用Netty直接相连的方式传递数据,即分别使用NettySink用于Server端、NettySource用于Client端进行数据传输。配置项包括NettySink的信息存放路径、NettySink的端口监测范围、连接是否通过SSL加密以及NettySink监测所使用的网络所在域等。 配置客户端提交作业开启告警功能: 通过Flink客户端提交的作业默认未开启告警功能,如果要开启告警功能,需要在提交作业的节点安装两个FlinkServer实例,并在客户端的“flink-conf.yaml”文件中配置相关参数。
  • 配置文件说明 Flink所有的配置参数都可以在客户端侧进行配置,建议用户直接修改客户端的“flink-conf.yaml”配置文件进行配置,如果通过Manager界面修改Flink服务参数,配置完成之后需要重新下载安装客户端: 配置文件路径:客户端安装路径/Flink/flink/conf/flink-conf.yaml。 文件的配置格式为key: value。 例:taskmanager.heap.size: 1024mb 注意配置项key:与value之间需有空格分隔。
  • 注意事项 当主集群关闭时,此工具将从ZooKeeper节点(RegionServer znode)获得WAL的处理进度以及WAL的处理队列,并将未复制的队列复制到备集群中。 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。 当Regionserver故障时,主集群的每个RegionServer都会通过watcher收到通知,并尝试锁定故障RegionServer的znode,包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后,将从旧位置删除。 在主集群关闭期间,ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据,并且RegionServer znode的wals将被移动到备集群下。
  • 参数配置 参数 描述 默认值 hbase.replication.bulkload.enabled 是否开启批量加载数据复制功能。参数值类型为Boolean。开启批量加载数据复制功能后该参数须在主集群中设置为“true”。 false hbase.replication.cluster.id 源HBase集群ID。开启批量加载数据复制功能必须设置该参数,在源集群定义,参数值类型为String。 -
  • 使用ReplicationSyncUp工具 在主集群hbase shell执行以下命令: hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1 replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒(默认值)的睡眠时间没有任何意义,因此将其设置为1(s),使备份过程更快触发。
  • 前提条件 主备集群已经安装并且启动。 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。 当主集群HBase服务关闭时,Zookeeper和HDFS服务应该启动并运行。 该工具应该由启动HBase进程的系统用户运行。 如果处于安全模式,请确保备集群的HBase系统用户具有主集群HDFS的读取权限。因为备集群将更新HBase系统Zookeeper节点和HDFS文件。 主集群HBase故障后,主集群的Zookeeper、文件系统和网络依然可用。
  • 场景介绍 为了快速对数据创建索引,HBase提供了可通过MapReduce功能创建索引的TableIndexer工具,该工具可实现添加、构建和删除索引。具体使用场景如下: 在表中预先存在大量数据的情况下,可能希望在某个列上添加索引。但是,使用addIndicesWithData()API添加索引会生成与相关数据对应的索引数据,这将花费大量时间。另一方面,使用addIndices()创建的索引不会构建与表数据对应的索引数据。因此,可以使用TableIndexer工具来完成索引的构建。 如果索引数据与表数据不一致,该工具可用于重新构建索引数据。 如果暂时禁用索引并且在此期间向禁用的索引列执行新的put操作,直接将索引从禁用状态启用可能会导致索引数据与表数据不一致。因此,必须在再次使用之前重新构建所有索引数据。 对于大量现有的索引数据,可以使用TableIndexer工具将索引数据从表中完全删除。 对于未建立索引的表,该工具允许同时添加和构建索引。
  • 场景介绍 HBase本身提供了ImportTsv&LoadIncremental工具来批量加载用户数据。当前提供了HIndexImportTsv来支持加载用户数据的同时可以完成对索引数据的批量加载。HIndexImportTsv继承了HBase批量加载数据工具ImportTsv的所有功能。此外,如果在执行HIndexImportTsv工具之前未建表,直接运行该工具,将会在创建表时创建索引,并在生成用户数据的同时生成索引数据。
  • 基于HBase本地二级索引查询数据 在具有索引的用户表中,可以使用Filter来查询数据。对于创建单索引和组合索引的用户表,使用过滤器查询的结果与没有使用索引的表相同,但数据查询性能高于没有使用索引的表。 索引的使用规则如下: 对于为一个或多个列创建单个索引的情况: 当将此列用于AND或OR查询筛选时,使用索引可以提高查询性能。 例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2)。 当在查询中使用“索引列”和“非索引列”进行过滤时,此索引可以提高查询性能。 例如,Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1)。 当在查询中使用“索引列”或“非索引列”进行筛选时,但不使用索引,查询性能不会提高。 例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2) OR Filter_Condition(NonIndexCol1)。 对于为多个列创建组合索引的情况: 当用于查询的列是组合索引的全部或部分列并且与组合索引具有相同的顺序时,使用索引会提高查询性能。 例如,为C1,C2和C3创建组合索引。 该索引在以下情况下生效: Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2) FILTER_CONDITION(IndexCol1) 该索引在下列情况下不生效: Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3) FILTER_CONDITION(IndexCol2) FILTER_CONDITION(IndexCol3) 当在查询中使用“索引列”和“非索引列”进行过滤时,使用索引可提高查询性能。 例如: Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1) 当在查询中使用“索引列”或“非索引列”进行筛选时,但不使用索引,查询性能不会提高。 例如: Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1)) 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。 例如,为C1,C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。
共100000条