华为云用户手册

  • 回答 在某些情况下,已经观察到诊断消息可能无限增长。由于诊断消息存储在状态存储中,不建议允许诊断消息无限增长。因此,需要有一个属性参数用于设置诊断消息的最大大小。 如果您需要设置“yarn.app.attempt.diagnostics.limit.kc”参数值,具体操作参考修改集群服务配置参数,进入Yarn“全部配置”页面,在搜索框搜索以下参数。 表1 参数描述 参数 描述 默认值 yarn.app.attempt.diagnostics.limit.kc 定义每次应用连接的诊断消息的数据大小,以千字节为单位(字符数*1024)。当使用ZooKeeper来存储应用程序的行为状态时,需要限制诊断消息的大小,以防止YARN拖垮ZooKeeper。如果将“yarn.resourcemanager.state-store.max-completed-applications”设置为一个较大的数值,则需要减小该属性参数的值以限制存储的总数据大小。 64
  • 回答 由于Hive使用Tez引擎在执行union语句时,生成的输出文件会存在HIVE_UNION_SUBDIR目录。 切回Mapreduce引擎后默认不读取目录下的文件,所以没有读取到HIVE_UNION_SUBDIR目录下的数据。 此时可以设置参数set mapreduce.input.fileinputformat.input.dir.recursive=true,开启union优化,决定是否读取目录下的数据。
  • 日志级别 ZooKeeper中提供了如表2所示的日志级别。日志级别优先级从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 FATAL FATAL表示当前事件处理出现严重错误信息,可能导致系统崩溃。 ERROR ERROR表示当前事件处理出现错误信息,系统运行出错。 WARN WARN表示当前事件处理存在异常信息,但认为是正常范围,不会导致系统出错。 INFO INFO表示系统及各事件正常运行状态信息。 DEBUG DEBUG表示系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 参考修改集群服务配置参数章节,进入ZooKeeper服务“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 单击“保存”,在弹出窗口中单击“确定”使配置生效。 配置完成后立即生效,不需要重启服务。
  • HetuEngine交互查询引擎概述 HetuEngine能够支持多种数据源的快速联合查询并提供可视化的数据源配置、管理页面,用户可通过HSConsole界面快速添加数据源。 当前版本HetuEngine支持对接的数据源如下表所示。 表1 HetuEngine对接数据源一览表 HetuEngine模式 数据源 数据源模式 支持对接的数据源版本 安全模式 Hive 安全模式 MRS 3.x、 FusionInsight 6.5.1 HBase MRS 3.x、FusionInsight 6.5.1 HetuEngine MRS 3.1.1及以后 GaussDB GaussDB 200、GaussDB A 8.0.0及以后 Hudi MRS 3.1.2及以后 ClickHouse MRS 3.1.1及以后 IoTDB MRS 3.2.0及以后 MySQL MySQL 5.7、MySQL 8.0及以后 Oracle Oracle 12及以后版本 GBase GBase8a V950及以后版本 普通模式 Hive 普通模式 MRS 3.x、FusionInsight 6.5.1 HBase MRS 3.x、FusionInsight 6.5.1 Hudi MRS 3.1.2及以后 ClickHouse MRS 3.1.1及以后 IoTDB MRS 3.2.0及以后 GaussDB 安全模式 GaussDB 200、GaussDB A 8.0.0及以后 MySQL MySQL 5.7、MySQL 8.0及以后 Oracle Oracle 12及以后版本 GBase GBase8a V950及以后版本 HetuEngine数据源的添加、配置、删除等操作支持动态生效,无须重启集群。 目前动态生效不支持关闭,数据源动态生效时间默认为60秒。如需修改动态生效时间,请参考3.e修改“coordinator.config.properties”和“worker.config.properties”中的参数“catalog.scanner-interval”值为需要设定的动态生效时间,例如: catalog.scanner-interval =120s HetuEngine支持查询下推(pushdown),它能把查询,或者部分查询,下推到连接的数据源。这意味着特殊的谓词,聚合函数或者其他一些操作,可以被传递到底层数据库或者文件系统进行处理。查询下推能带来以下好处: 提升整体的查询性能。 减少HetuEngine和数据源之间的网络流量。 减少远端数据源的负载。 HetuEngine对查询下推的具体支持情况,依赖于具体的Connector,以及Connector相关的底层数据源或存储系统。 数据源集群 域名 与HetuEngine集群域名不能相同,HetuEngine也不支持同时对接两个相同域名的数据源(Hive,Hbase,Hudi数据源)。 数据源集群与HetuEngine集群节点业务平面网络互通。 父主题: 使用HetuEngine
  • 执行SparkSql语句 在“Database”右侧下拉列表选择一个SparkSql中的数据库,默认数据库为“default”。 系统将自动显示数据库中的所有表。可以输入表名关键字,系统会自动搜索包含此关键字的全部表。 图1 选择数据库 单击指定的表名,可以显示表中所有的列。 光标移动到表所在的行,单击 可以查看列的详细信息。 在SparkSql语句编辑区输入查询语句。 单击后的三角并选择“解释”,编辑器将分析输入的查询语句是否有语法错误以及执行计划,如果存在语法错误则显示“Error while compiling statement”。 单击开始执行SparkSql语句。 图2 执行语句 如果希望下次继续使用已输入的SparkSql语句,请单击保存。 高级查询配置: 单击右上角的,对文件、功能、设置等信息进行配置。 查看快捷键: 单击右上角的,可查看语法和键盘快捷方式信息。 格式化SparkSql语句,请单击后的三角选择“格式” 删除已输入的SparkSql语句,请单击后的三角选择“清除” 查看历史: 单击“查询历史记录”,可查看SparkSql运行情况,支持显示所有语句或只显示保存的语句的运行情况。历史记录存在多个结果时,可以在输入框使用关键字进行搜索。
  • 配置Spark2x 使用SparkSql编辑器之前需要先修改Spark2x配置。 进入Spark2x的全部配置页面,具体操作请参考修改集群服务配置参数。 设置Spark2x多实例模式,搜索并修改Spark2x服务的以下参数: 参数名称 值 spark.thriftserver.proxy.enabled false spark.scheduler.allocation.file #{conf_dir}/fairscheduler.xml 进入JD BCS erver2x自定义界面,在“spark.core-site.customized.configs”参数内,添加如下两个自定义项: 表1 自定义参数 名称 值 hadoop.proxyuser.hue.groups * hadoop.proxyuser.hue.hosts * 保存配置,重启Spark2x服务。
  • Spark使用说明 MRS 3.3.0-LTS及之后的版本中,Spark2x服务改名为Spark,服务包含的角色名也有差异,例如JobHistory2x变更为JobHistory。 相关涉及服务名称、角色名称的描述和操作请以实际版本为准。 Spark是一个开源的,并行数据处理框架,能够帮助用户简单、快速的开发大数据应用,对数据进行离线处理、流式处理、交互式分析等。 相比于Hadoop,Spark拥有明显的性能优势。 父主题: 使用Spark/Spark2x
  • 问题 线程“main”报错 org.apache.kafka.common.KafkaException,构造kafka消费者失败,报错: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set
  • 回答 当试图从启用SSL的kafka数据源采集数据时,而安装程序无法读取jars.conf文件及其属性时,可能会发生这种情况。 要解决此问题,需要将所需的属性作为通过Spark提交的命令的一部分传递。如:--files jaas.conf,failed_tables.json --conf 'spark.driver.extraJavaOptions=-Djava.security.auth.login.config=jaas.conf' --conf 'spark.executor .extraJavaOptions=-Djava.security.auth.login.config=jaas.conf'
  • 问题 为什么日期类型的字段作为过滤条件时匹配'2016-6-30'时没有查询结果,匹配'2016-06-30'时有查询结果。 如下图所示:“select count(*)from trxfintrx2012 a where trx_dte_par='2016-6-30'”,其中trx_dte_par为日期类型的字段,当过滤条件为“where trx_dte_par='2016-6-30'”时没有查询结果,当过滤条件为“where trx_dte_par='2016-06-30'”时有查询结果。
  • 回答 在executor核数等于1的情况下,遵循以下规则对调优Spark Streaming运行参数有所帮助。 Spark任务处理速度和Kafka上partition个数有关,当partition个数小于给定executor个数时,实际使用的executor个数和partition个数相同,其余的将会被空闲。所以应该使得executor个数小于或者等于partition个数。 当Kafka上不同partition数据有倾斜时,数据较多的partition对应的executor将成为数据处理的瓶颈,所以在执行Producer程序时,数据平均发送到每个partition可以提升处理的速度。 在partition数据均匀分布的情况下,同时提高partition和executor个数,将会提升Spark处理速度(当partition个数和executor个数保持一致时,处理速度是最快的)。 在partition数据均匀分布的情况下,尽量保持partition个数是executor个数的整数倍,这样将会使资源得到合理利用。
  • 问题 当创建了表名为table的表后,执行drop table table上报以下错误,或者执行其他操作也会出现类似错误。 16/07/12 18:56:29 ERROR SparkSQLDriver: Failed in [drop table table]java.lang.RuntimeException: [1.1] failure: identifier expectedtable^at scala.sys.package$.error(package.scala:27)at org.apache.spark.sql.catalyst.SqlParserTrait$class.parseTableIdentifier(SqlParser.scala:56)at org.apache.spark.sql.catalyst.SqlParser$.parseTableIdentifier(SqlParser.scala:485)
  • 配置描述 提供两种不同的数据汇聚功能配置选项,两者在Spark JDB CS erver服务端的tunning选项中进行设置,设置完后需要重启JDBCServer。 表1 参数说明 参数 说明 默认值 spark.sql.bigdata.thriftServer.useHdfsCollect 是否将结果数据保存到HDFS中而不是内存中。 优点:由于查询结果保存在hdfs端,因此基本不会造成JDBCServer的OOM。 缺点:速度慢。 true:保存至HDFS中。 false:不使用该功能。 须知: spark.sql.bigdata.thriftServer.useHdfsCollect参数设置为true时,将结果数据保存到HDFS中,但JobHistory原生页面上Job的描述信息无法正常关联到对应的SQL语句,同时spark-beeline命令行中回显的Execution ID为null,为解决JDBCServer OOM问题,同时显示信息正确,建议选择spark.sql.userlocalFileCollect参数进行配置。 false spark.sql.uselocalFileCollect 是否将结果数据保存在本地磁盘中而不是内存里面。 优点:结果数据小数据量情况下和原生内存的方式相比性能损失可以忽略,大数据情况下(亿级数据)性能远比使用HDFS,以及原生内存方式好。 缺点:需要调优。大数据情况下建议JDBCServer driver端内存10G,executor端每个核心分配3G内存。 true:使用该功能。 false: 不使用该功能。 false spark.sql.collect.Hive 该参数在spark.sql.uselocalFileCollect开启的情况下生效。直接序列化的方式,还是间接序列化的方式保存结果数据到磁盘。 优点:针对分区数特别多的表查询结果汇聚性能优于直接使用结果数据保证在磁盘的方式。 缺点:和spark.sql.uselocalFileCollect开启时候的缺点一样。 true:使用该功能。 false:不使用该功能。 false spark.sql.collect.serialize 该参数在spark.sql.uselocalFileCollect, spark.sql.collect.Hive同时开启的情况下生效。 作用是进一步提升性能 java:采用java序列化方式收集数据。 kryo:采用kryo序列化方式收集数据,性能要比采用java好。 java 参数spark.sql.bigdata.thriftServer.useHdfsCollect和spark.sql.uselocalFileCollect不能同时设置为true。
  • 回答 在JobHistory界面中跳转到某个应用的原生页面时,JobHistory需要回放该应用的Event log,如果应用包含的事件日志较大,则回放时间较长,浏览器需要较长时间的等待。 当前浏览器访问JobHistory原生页面需经过httpd代理,代理的超时时间是10分钟,因此,如果JobHistory在10分钟内无法完成Event log的解析并返回,httpd会主动向浏览器返回Proxy Error信息。
  • 问题 在Spark的spark-shell上执行如下代码失败: val acctId = List(("49562", "Amal", "Derry"), ("00000", "Fred", "Xanadu"))val rddLeft = sc.makeRDD(acctId)val dfLeft = rddLeft.toDF("Id", "Name", "City")//dfLeft.showval acctCustId = List(("Amal", "49562", "CO"), ("Dave", "99999", "ZZ"))val rddRight = sc.makeRDD(acctCustId)val dfRight = rddRight.toDF("Name", "CustId", "State")//dfRight.showval dfJoin = dfLeft.join(dfRight, dfLeft("Id") === dfRight("CustId"), "outer")dfJoin.showdfJoin.repartition(1).write.format("com.databricks.spark.csv").option("delimiter", "\t").option("header", "true").option("treatEmptyValuesAsNulls", "true").option("nullValue", "").save("/tmp/outputDir")
  • 回答 打开FusionInsight Manager页面,看到Yarn服务的业务IP地址为192网段。 从Yarn的日志看到,Yarn读取的Spark Web UI地址为http://10.120.169.53:23011,是10网段的IP地址。由于192网段的IP和10网段的IP不能互通,所以导致访问Spark Web UI界面失败。 修改方案: 登录10.120.169.53客户端机器,修改/etc/hosts文件,将10.120.169.53更改为相对应的192网段的IP地址。再重新运行Spark应用,这时就可以打开Spark Web UI界面。
  • 问题 CTBase访问启用Ranger插件的HBase服务时,如果创建聚簇表,提示权限不足。 报错信息如下: ERROR: Create ClusterTable failed. Error: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'ctbase2@HADOOP.COM' (action=create)at org.apache.ranger.authorization.hbase.AuthorizationSession.publishResults(AuthorizationSession.java:278)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess(RangerAuthorizationCoprocessor.java:654)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:772)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:943)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:428)at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:351)at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:348)at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:581)at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:655)at org.apache.hadoop.hbase.master.MasterCoprocessorHost.preCreateTable(MasterCoprocessorHost.java:348)at org.apache.hadoop.hbase.master.HMaster$5.run(HMaster.java:2192)at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134)at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2189)at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:711)at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:458)at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
  • 回答 正常情况下 ,当一个application的单个task的attempt连续在一个节点上失败3次,那么该application的AppMaster就会将该节点加入黑名单,之后AppMaster就会通知调度器不要继续调度task到该节点,从而避免任务失败。 但是默认情况下,当集群中有33%的节点都被加入黑名单时,调度器会忽略黑名单节点。因此,该黑名单特性在小集群场景下容易失效。比如,集群只有3个节点,当1个节点出现故障,黑名单机制失效,不管task的attempt在同一个节点失败多少次,调度器仍然会将task继续调度到该节点,从而导致application因为task失败达到最大attempt次数(MapReduce默认4次)而失败。 规避手段: 在“客户端安装路径/Yarn/config/yarn-site.xml”文件中修改“yarn.resourcemanager.am-scheduling.node-blacklisting-disable-threshold”参数以百分比的形式配置忽略黑名单节点的阈值。建议根据集群规模,适当增大该参数的值,如3个节点的集群, 建议增大到50%。 Superior调度器的框架设计是基于时间的异步调度,当NodeManager故障后,ResourceManager无法快速的感知到NodeManager已经出了问题(默认10mins),因此在此期间,Superior调度器仍然会向该节点调度task,从而导致任务失败。
  • 使用验证Function Plugin 登录客户端安装节点,执行安全认证。 cd /opt/client source bigdata_env kinit HetuEngine用户 hetu-cli 选择验证环境上有数值(int或double类型)列的表,此处选择hive.default.test1,执行如下命令验证Function Plugin。 查询表。 select * from hive.default.test1; select * from hive.default.test1;name | price--------|-------apple | 17.8orange | 25.0(2 rows) 返回平均值。 select avg_double(price) from hive.default.test1; select avg_double(price) from hive.default.test1;_col0------- 21.4(1 row) 返回输入整数加2的值。 select add_two(4); select add_two(4);_col0------- 6(1 row)
  • 部署Function Plugin 部署前需要确认: HetuEngine服务处于正常状态。 HDFS和HetuEngine客户端已经安装到集群节点,例如“/opt/client”目录下。 已创建HetuEngine用户,用户创建请参考创建HetuEngine权限角色。 将打包Maven项目得到的myfunctions-0.0.1-SNAPSHOT目录上传到安装客户端节点的任意目录。 将myfunctions-0.0.1-SNAPSHOT目录上传到HDFS中。 同时上传6中target目录下的所有jar包。 登录客户端安装节点,执行安全认证。 cd /opt/client source bigdata_env kinit HetuEngine的用户 根据回显提示输入密码,首次认证需要修改密码。 HDFS中创建如下路径,如已存在则不需创建。 hdfs dfs -mkdir -p /user/hetuserver/udf/data/externalFunctionsPlugin 上传myfunctions-0.0.1-SNAPSHOT目录到HDFS。 hdfs dfs -put myfunctions-0.0.1-SNAPSHOT /user/hetuserver/udf/data/externalFunctionsPlugin 修改目录属主。 hdfs dfs -chown -R hetuserver:hadoop /user/hetuserver/udf/data 重启HetuEngine计算实例。
  • 集群外节点安装客户端 根据在集群外节点安装客户端前提条件,创建一个满足要求的弹性云服务器。 执行ntp时间同步,使集群外节点的时间与MRS集群时间同步。 执行vi /etc/ntp.conf命令编辑NTP客户端配置文件,并增加MRS集群中Master节点的IP并注释掉其他server的地址。 server master1_ip preferserver master2_ip 图2 增加Master节点的IP 执行service ntpd stop命令关闭NTP服务。 执行如下命令,手动同步一次时间: /usr/sbin/ntpdate 192.168.10.8 192.168.10.8为主Master节点的IP地址。 执行service ntpd start或systemctl restart ntpd命令启动NTP服务。 执行ntpstat命令查看时间同步结果。 参考以下步骤,从FusionInsight Manager下载集群客户端软件包并复制到ECS节点后安装客户端。 访问集群Manager,参考集群内节点安装客户端下载集群客户端到主管理节点的指定目录。 使用root用户登录主管理节点,执行以下命令复制客户端安装包到待安装客户端的节点: scp -p /tmp/FusionInsight-Client/FusionInsight_Cluster_1_Services_Client.tar 待安装客户端节点的IP地址:/tmp 使用待安装客户端的用户登录待安装客户端节点。 执行以下命令安装客户端,如果当前用户无客户端软件包以及客户端安装目录的操作权限,需使用root用户进行赋权: cd /tmp tar -xvf FusionInsight_Cluster_1_Services_Client.tar tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar cd FusionInsight_Cluster_1_Services_ClientConfig ./install.sh /opt/client 执行以下命令,切换到客户端目录并配置环境变量: cd /opt/client source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinitMRS集群用户 例如,kinit admin。 直接执行组件的客户端命令。 例如使用HDFS客户端命令查看HDFS根目录文件,执行hdfs dfs -ls /。
  • 使用客户端 在已安装客户端的节点,执行sudo su - omm命令切换用户。执行以下命令切换到客户端目录: cd /opt/client 执行以下命令配置环境变量: source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinitMRS集群用户 例如,kinit admin。 启用Kerberos认证的MRS集群默认创建“admin”用户账号,用于集群管理员维护集群。 直接执行组件的客户端命令。 例如:使用HDFS客户端命令查看HDFS根目录文件,执行hdfs dfs -ls /。
  • 在集群外节点安装客户端前提条件 已准备一个Linux弹性云服务器,主机操作系统及版本建议参见表1。 表1 参考列表 CPU架构 操作系统 支持的版本号 x86计算 Euler EulerOS 2.5 SUSE SUSE Linux Enterprise Server 12 SP4(SUSE 12.4) Red Hat Red Hat-7.5-x86_64(Red Hat 7.5) CentOS CentOS-7.6版本(CentOS 7.6) 鲲鹏计算(ARM) Euler EulerOS 2.8 CentOS CentOS-7.6版本(CentOS 7.6) 同时为弹性云服务分配足够的磁盘空间,例如“40GB”。 弹性云服务器的VPC需要与MRS集群在同一个VPC中。 弹性云服务器的安全组需要和MRS集群Master节点的安全组相同。 弹性云服务器操作系统已安装NTP服务,且NTP服务运行正常。 如果未安装,在配置了yum源的情况下,可执行yum install ntp -y命令自行安装。 需要允许用户使用密码方式登录Linux弹性云服务器(SSH方式)。 MRS集群安全组入方向将所有端口对客户端节点放开,具体操作请参考添加安全组规则。
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“Shell”按钮,将其拖到操作区中。 在弹出的“Shell”窗口中配置“Shell command”的值,例如“oozie_shell.sh”,然后单击“添加”。 单击“文件+”,添加Shell命令执行文件或Oozie样例执行文件,可以选择存储在HDFS的文件或本地文件。 如果文件存储在HDFS上,选择“.sh”文件所在路径即可,例如“user/hueuser/shell/oozie_shell.sh”。 如果选择本地文件,则需在“选择文件”界面,单击“上传文件”,上传本地文件,文件上传成功后,选择该文件即可。 如果执行的Shell文件需要传递参数,可单击“参数+”设置参数。 传递参数的顺序需要和Shell脚本中保持一致。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“Shell-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。 配置Shell命令为Linux指令时,请指定为原始指令,不要使用快捷键指令。例如:ls -l ,不要配置成ll。可配置成Shell命令ls ,参数添加一个 “-l”。 Windows上传Shell脚本到HDFS时,请保证Shell脚本的格式为Unix,格式不正确会导致Shell作业提交失败。
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“Java 程序”按钮,将其拖到操作区中。 在弹出的“Java program”窗口中配置“Jar name”的值,例如“/user/admin/examples/apps/java-main/lib/oozie-examples-5.1.0.jar”。配置“Main class”的值,例如“org.apache.oozie.example.DemoJavaMain”。然后单击“添加”。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“Java-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。
  • compaction&cleaning配置 表5 compaction&cleaning参数配置 参数 描述 默认值 hoodie.clean.automatic 是否执行自动clean。 true hoodie.cleaner.policy 要使用的清理策略。Hudi将删除旧版本的parquet文件以回收空间。 任何引用此版本文件的查询和计算都将失败。建议确保数据保留的时间超过最大查询执行时间。 KEEP_LATEST_COMMITS hoodie.cleaner.commits.retained 保留的提交数。因此,数据将保留为num_of_commits * time_between_commits(计划的),这也直接转化为逐步提取此数据集的数量。 10 hoodie.keep.max.commits 触发归档操作的commit数阈值。 30 hoodie.keep.min.commits 归档操作保留的commit数。 20 hoodie.commits.archival.batch 这控制着批量读取并一起归档的提交即时的数量。 10 hoodie.parquet.small.file.limit 该值应小于maxFileSize,如果将其设置为0,会关闭此功能。由于批处理中分区中插入记录的数量众多,总会出现小文件。Hudi提供了一个选项,可以通过将对该分区中的插入作为对现有小文件的更新来解决小文件的问题。此处的大小是被视为“小文件大小”的最小文件大小。 104857600 byte hoodie.copyonwrite.insert.split.size 插入写入并行度。为单个分区的总共插入次数。写出100MB的文件,至少1KB大小的记录,意味着每个文件有100K记录。默认值是超额配置为500K。 为了改善插入延迟,请对其进行调整以匹配单个文件中的记录数。将此值设置为较小的值将导致文件变小(尤其是当compactionSmallFileSize为0时)。 500000 hoodie.copyonwrite.insert.auto.split Hudi是否应该基于最后24个提交的元数据动态计算insertSplitSize,默认关闭。 true hoodie.copyonwrite.record.size.estimate 平均记录大小。如果指定,Hudi将使用它,并且不会基于最后24个提交的元数据动态地计算。 没有默认值设置。这对于计算插入并行度以及将插入打包到小文件中至关重要。 1024 hoodie.compact.inline 当设置为true时,紧接在插入或插入更新或批量插入的提交或增量提交操作之后由摄取本身触发压缩。 true hoodie.compact.inline.max.delta.commits 触发内联压缩之前要保留的最大增量提交数。 5 hoodie.compaction.lazy.block.read 当CompactedLogScanner合并所有日志文件时,此配置有助于选择是否应延迟读取日志块。选择true以使用I/O密集型延迟块读取(低内存使用),或者为false来使用内存密集型立即块读取(高内存使用)。 true hoodie.compaction.reverse.log.read HoodieLogFormatReader会从pos=0到pos=file_length向前读取日志文件。如果此配置设置为true,则Reader会从pos=file_length到pos=0反向读取日志文件。 false hoodie.cleaner.parallelism 如果清理变慢,请增加此值。 200 hoodie.compaction.strategy 用来决定在每次压缩运行期间选择要压缩的文件组的压缩策略。默认情况下,Hudi选择具有累积最多未合并数据的日志文件。 org.apache.hudi.table.action.compact.strategy. LogFileSizeBasedCompactionStrategy hoodie.compaction.target.io LogFileSizeBasedCompactionStrategy的压缩运行期间要花费的MB量。当压缩以内联模式运行时,此值有助于限制摄取延迟。 500 * 1024 MB hoodie.compaction.daybased.target.partitions 由org.apache.hudi.io.compact.strategy.DayBasedCompactionStrategy使用,表示在压缩运行期间要压缩的最新分区数。 10 hoodie.compaction.payload.class 这需要与插入/插入更新过程中使用的类相同。就像写入一样,压缩也使用记录有效负载类将日志中的记录彼此合并,再次与基本文件合并,并生成压缩后要写入的最终记录。 org.apache.hudi.common.model.Defaulthoodierecordpayload hoodie.schedule.compact.only.inline 在写入操作时,是否只生成压缩计划。在hoodie.compact.inline=true时有效。 false hoodie.run.compact.only.inline 通过Sql执行run compaction命令时,是否只执行压缩操作,压缩计划不存在时直接退出。 false
  • 单表并发控制配置 表6 单表并发控制参数配置 参数 描述 默认值 hoodie.write.lock.provider 指定lock provider,不建议使用默认值,使用org.apache.hudi.hive.HiveMetastoreBasedLockProvider。 org.apache.hudi.client.transaction.lock.ZookeeperBasedLockProvider hoodie.write.lock.hivemetastore.database Hive的database。 无 hoodie.write.lock.hivemetastore.table Hive的table name。 无 hoodie.write.lock.client.num_retries 重试次数。 10 hoodie.write.lock.client.wait_time_ms_between_retry 重试间隔。 10000 hoodie.write.lock.conflict.resolution.strategy lock provider类,必须是ConflictResolutionStrategy的子类。 org.apache.hudi.client.transaction.SimpleConcurrentFileWritesConflictResolutionStrategy hoodie.write.lock.zookeeper.base_path 存放ZNodes的路径,同一张表的并发写入需配置一致。 无 hoodie.write.lock.zookeeper.lock_key ZNode的名称,建议与Hudi表名相同。 无 hoodie.write.lock.zookeeper.connection_timeout_ms ZooKeeper连接超时时间。 15000 hoodie.write.lock.zookeeper.port ZooKeeper端口号。 无 hoodie.write.lock.zookeeper.url ZooKeeper的url。 无 hoodie.write.lock.zookeeper.session_timeout_ms ZooKeeper的session过期时间。 60000
  • Clustering配置 本章节内容仅适用于MRS 3.2.0及之后版本。 Clustering中有两个策略分别是hoodie.clustering.plan.strategy.class和hoodie.clustering.execution.strategy.class。一般情况下指定plan.strategy为SparkRecentDaysClusteringPlanStrategy或者SparkSizeBasedClusteringPlanStrategy时,execution.strategy不需要指定。但当plan.strategy为SparkSingleFileSortPlanStrategy时,需要指定execution.strategy为SparkSingleFileSortExecutionStrategy。 表7 Clustering参数配置 参数 描述 默认值 hoodie.clustering.inline 是否同步执行clustering。 false hoodie.clustering.inline.max.commits 触发clustering的commit数。 4 hoodie.clustering.async.enabled 是否启用异步执行clustering。 说明: 此参数仅适用于MRS 3.3.0-LTS及之后版本。 false hoodie.clustering.async.max.commits 异步执行时触发clustering的commit数。 说明: 此参数仅适用于MRS 3.3.0-LTS及之后版本。 4 hoodie.clustering.plan.strategy.target.file.max.bytes 指定clustering后每个文件大小最大值。 1024 * 1024 * 1024 byte hoodie.clustering.plan.strategy.small.file.limit 小于该大小的文件会被clustering。 300 * 1024 * 1024 byte hoodie.clustering.plan.strategy.sort.columns clustering用以排序的列。 无 hoodie.layout.optimize.strategy Clustering执行策略,可选linear、z-order、hilbert三种排序方式。 linear hoodie.layout.optimize.enable 使用z-order、hilbert时需要开启。 false hoodie.clustering.plan.strategy.class 筛选FileGroup进行clustering的策略类,默认筛选小于hoodie.clustering.plan.strategy.small.file.limit阈值的文件。 org.apache.hudi.client.clustering.plan.strategy.SparkSizeBasedClusteringPlanStrategy hoodie.clustering.execution.strategy.class 执行clustering的策略类(RunClusteringStrategy的子类),用以定义群集计划的执行方式。 默认类们按指定的列对计划中的文件组进行排序,同时满足配置的目标文件大小。 org.apache.hudi.client.clustering.run.strategy.SparkSortAndSizeExecutionStrategy hoodie.clustering.plan.strategy.max.num.groups 设置执行clustering时最多选择多少个FileGroup,该值越大并发度越大。 30 hoodie.clustering.plan.strategy.max.bytes.per.group 设置执行clustering时每个FileGroup最多有多少数据参与clustering。 2 * 1024 * 1024 * 1024 byte
  • 写入操作配置 表1 写入操作重要配置项 参数 描述 默认值 hoodie.datasource.write.table.name 指定写入的Hudi表名。 无 hoodie.datasource.write.operation 写Hudi表指定的操作类型,当前支持upsert、delete、insert、bulk_insert等方式。 upsert:更新插入混合操作。 delete:删除操作。 insert:插入操作。 bulk_insert: 用于初始建表导入数据, 注意初始建表禁止使用upsert、insert方式。 insert_overwrite:对静态分区执行insert overwrite。 insert_overwrite_table:动态分区执行insert overwrite,该操作并不会立刻删除全表做overwrite,会逻辑上重写hudi表的元数据,无用数据后续由hudi的clean机制清理。效率比bulk_insert加overwrite高。 upsert hoodie.datasource.write.table.type 指定Hudi表类型,一旦这个表类型被指定,后续禁止修改该参数,可选值MERGE_ON_READ。 COPY_ON_WRITE hoodie.datasource.write.precombine.field 该值用于在写之前对具有相同的key的行进行合并去重。 指定为具体的表字段 hoodie.datasource.write.payload.class 在更新过程中,该类用于提供方法将要更新的记录和更新的记录做合并,该实现可插拔,如要实现自己的合并逻辑,可自行编写。 org.apache.hudi.common.model.DefaultHoodieRecordPayload hoodie.datasource.write.recordkey.field 用于指定Hudi的主键,Hudi表要求有唯一主键。 指定为具体的表字段 hoodie.datasource.write.partitionpath.field 用于指定分区键,该值配合hoodie.datasource.write.keygenerator.class使用可以满足不同的分区场景。 无 hoodie.datasource.write.hive_style_partitioning 用于指定分区方式是否和Hive保持一致,建议该值设置为true。 true hoodie.datasource.write.keygenerator.class 配合hoodie.datasource.write.partitionpath.field,hoodie.datasource.write.recordkey.field产生主键和分区方式。 说明: 写入设置KeyGenerator与表保存的参数值不一致时将提示需要保持一致。 org.apache.hudi.keygen.ComplexKeyGenerator
  • index相关配置 表3 index相关参数配置 参数 描述 默认值 hoodie.index.class 用户自定义索引的全路径名,索引类必须为HoodieIndex的子类,当指定该配置时,其会优先于hoodie.index.type配置。 "" hoodie.index.type 使用的索引类型,默认为布隆过滤器。可能的选项是[BLOOM | HBASE | GLOBAL_BLOOM | SIMPLE | GLOBAL_SIMPLE] 。 布隆过滤器消除了对外部系统的依赖,并存储在Parquet数据文件的页脚中。 BLOOM hoodie.index.bloom.num_entries 存储在布隆过滤器中的条目数。 假设maxParquetFileSize为128MB,averageRecordSize为1024B,因此,一个文件中的记录总数约为130K。 默认值(60000)大约是此近似值的一半。 注意: 将此值设置的太低,将产生很多误报,并且索引查找将必须扫描比其所需的更多的文件;如果将其设置的非常高,将线性增加每个数据文件的大小(每50000个条目大约4KB)。 60000 hoodie.index.bloom.fpp 根据条目数允许的错误率。 用于计算应为布隆过滤器分配多少位以及哈希函数的数量。通常将此值设置的很低(默认值0.000000001),在磁盘空间上进行权衡以降低误报率。 0.000000001 hoodie.bloom.index.parallelism 索引查找的并行度,其中涉及Spark Shuffle。 默认情况下,根据输入的工作负载特征自动计算的。 0 hoodie.bloom.index.prune.by.ranges 为true时,从文件框定信息,可以加快索引查找的速度。 如果键具有单调递增的前缀,例如时间戳,则特别有用。 true hoodie.bloom.index.use.caching 为true时,将通过减少用于计算并行度或受影响分区的IO来缓存输入的RDD以加快索引查找。 true hoodie.bloom.index.use.treebased.filter 为true时,启用基于间隔树的文件过滤优化。与暴力模式相比,此模式可根据键范围加快文件过滤速度。 true hoodie.bloom.index.bucketized.checking 为true时,启用了桶式布隆过滤。这减少了在基于排序的布隆索引查找中看到的偏差。 true hoodie.bloom.index.keys.per.bucket 仅在启用bloomIndexBucketizedChecking并且索引类型为bloom的情况下适用。 此配置控制“存储桶”的大小,该大小可跟踪对单个文件进行的记录键检查的次数,并且是分配给执行布隆过滤器查找的每个分区的工作单位。 较高的值将分摊将布隆过滤器读取到内存的固定成本。 10000000 hoodie.bloom.index.update.partition.path 仅在索引类型为GLOBAL_BLOOM时适用。 为true时,当对一个已有记录执行包含分区路径的更新操作时,将会导致把新记录插入到新分区,而把原有记录从旧分区里删除。为false时,只对旧分区的原有记录进行更新。 true hoodie.index.hbase.zkquorum 仅在索引类型为HBase时适用,必填选项。要连接的HBase ZK Quorum URL。 无 hoodie.index.hbase.zkport 仅在索引类型为HBase时适用,必填选项。要连接的HBase ZK Quorum端口。 无 hoodie.index.hbase.zknode.path 仅在索引类型为HBase时适用,必填选项。这是根znode,它将包含HBase创建及使用的所有znode。 无 hoodie.index.hbase.table 仅在索引类型为HBase时适用,必填选项。HBase表名称,用作索引。Hudi将row_key和[partition_path, fileID, commitTime]映射存储在表中。 无
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全