华为云用户手册

  • 前提条件 已安装ClickHouse客户端,例如客户端安装目录为“/opt/client”。 在FusionInsight Manager已创建具有ClickHouse相关表权限和访问HDFS的权限的用户,例如:clickhouseuser。 在对接HDFS组件之前,需要注意首先确保HDFS中有对应的目录,ClickHouse的HDFS引擎只会操作文件不会创建或删除目录。 当前系统只支持部署在x86节点的ClickHouse集群对接HDFS,部署在ARM节点的ClickHouse集群不支持对接HDFS。
  • 参数说明 表1 算子参数说明 参数 含义 类型 是否必填 默认值 逆序转换的字段 配置字符串逆序转换的字段相关信息: 输入字段名:配置输入字段名,需填写上一个转换步骤生成的字段名。 输出字段名:配置输出字段名。 类型:配置字段类型。 输出字段长度:配置字段长度,字段值实际长度太长则按配置的长度截取,“类型”为“CHAR”时实际长度不足则空格补齐,“类型”为“VARCHAR”时实际长度不足则不补齐。 map 是 无
  • 注意事项 Group By数据倾斜 Group By也同样存在数据倾斜的问题,设置hive.groupby.skewindata为true,生成的查询计划会有两个MapReduce Job,第一个Job的Map输出结果会随机的分布到Reduce中,每个Reduce做聚合操作,并输出结果,这样的处理会使相同的Group By Key可能被分发到不同的Reduce中,从而达到负载均衡,第二个Job再根据预处理的结果按照Group By Key分发到Reduce中完成最终的聚合操作。 Count Distinct聚合问题 当使用聚合函数count distinct完成去重计数时,处理值为空的情况会使Reduce产生很严重的数据倾斜,可以将空值单独处理,如果是计算count distinct,可以通过where字句将该值排除掉,并在最后的count distinct结果中加1。如果还有其他计算,可以先将值为空的记录单独处理,再和其他计算结果合并。
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“Fs”按钮,将其拖到操作区中。 在弹出的“Fs”窗口中单击“添加”。 单击“CREATE DIRECTORY+”,添加待创建的HDFS目录。例如“/user/admin/examples/output-data/mkdir_workflow”和“/user/admin/examples/output-data/mkdir_workflow1”。 如果单击了“DELETE PATH+”添加待删除的HDFS路径,该参数不能为空,否则会默认删除HDFS的“/user{提交用户名}”目录,可能会导致其他任务运行异常。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“HDFS-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 根据表1,对如下参数进行设置。 表1 AM作业保留相关参数 参数 说明 默认值 yarn.app.mapreduce.am.work-preserve 是否开启AM作业保留特性。 false yarn.app.mapreduce.am.umbilical.max.retries AM作业保留特性中,运行的容器尝试恢复的最大次数。 5 yarn.app.mapreduce.am.umbilical.retry.interval AM作业保留特性中,运行的容器尝试恢复的时间间隔。单位:毫秒。 10000 yarn.resourcemanager.am.max-attempts ApplicationMaster的重试次数。增加重试次数可以避免当资源不足时造成AM启动失败。 适用于所有ApplicationMaster的全局设置。每个ApplicationMaster都可以使用API设置一个单独的最大尝试次数,但这个次数不能大于全局的最大次数。如果大于了,那ResourceManager将会覆写这个单独的最大尝试次数。取值范围大于等于1。 2
  • 配置场景 在YARN中,ApplicationMaster(AM)与Container类似,都运行在NodeManager(NM)上(本文中忽略未管理的AM)。AM可能由于多种原因崩溃、退出或关闭。如果AM停止运行,ResourceManager(RM)会关闭ApplicationAttempt中管理的所有Container,其中包括当前在NM上运行的所有Container。RM会在另一计算节点上启动新的ApplicationAttempt。 对于不同类型的应用,希望以不同方式处理AM重启的事件。MapReduce类应用的目标是不丢失任务,但允许丢失当前运行的Container。但是对于长周期的YARN服务而言,用户可能并不希望由于AM的故障而导致整个服务停止运行。 YARN支持在新的ApplicationAttempt启动时,保留之前Container的状态,因此运行中的作业可以继续无故障的运行。 图1 AM作业保留
  • 回答 当通过OfflineMetaRepair工具重建元数据时,HMaster在启动期间等待所有region server的WAL分割,以避免数据不一致问题。一旦WAL分割完成,HMaster将进行用户region的分配。所以当在集群异常的场景下,WAL分割可能需要很长时间,这取决于多个因素,例如太多的WALs,较慢的I/O,region servers不稳定等。 为确保HMaster能够成功完成所有region server WAL分割,请执行以下步骤: 确保集群稳定,不存在其他问题。如有任何问题,请先修复。 为“hbase.master.initializationmonitor.timeout”参数配置一个较大的值,默认值为“3600000”毫秒。 重启HBase服务。
  • 问题 为什么在使用OfflineMetaRepair工具重新构建元数据后,HMaster启动的时候会等待namespace表分配超时,最后启动失败? 且HMaster将输出下列FATAL消息表示中止: 2017-06-15 15:11:07,582 FATAL [Hostname:16000.activeMasterManager] master.HMaster: Unhandled exception. Starting shutdown. java.io.IOException: Timedout 120000ms waiting for namespace table to be assigned at org.apache.hadoop.hbase.master.TableNamespaceManager.start(TableNamespaceManager.java:98) at org.apache.hadoop.hbase.master.HMaster.initNamespace(HMaster.java:1054) at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:848) at org.apache.hadoop.hbase.master.HMaster.access$600(HMaster.java:199) at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:1871) at java.lang.Thread.run(Thread.java:745)
  • 操作步骤 以客户端安装用户,登录安装Oozie客户端的节点。 执行以下命令,获取安装环境信息。其中“/opt/client”为客户端安装路径,该操作的客户端目录只是举例,请根据实际安装目录修改。 source /opt/client/bigdata_env 判断集群认证模式。 安全模式,执行kinit命令进行用户认证。 例如,使用oozieuser用户进行认证。 kinit oozieuser 普通模式,执行4。 执行以下命令,进入样例目录。 cd /opt/client/Oozie/oozie-client-*/examples/apps/sqoop/ 该目录下需关注文件如表1所示。 表1 文件说明 文件名称 描述 job.properties 工作流的参数变量定义文件。 workflow.xml 工作流的规则定制文件。 执行以下命令,编辑“job.properties”文件。 vi job.properties 修改如下内容: 更改“userName”的参数值为提交任务的人机用户名,例如“userName=oozieuser”。 执行以下命令,编辑“workflow.xml”文件。 vi workflow.xml 修改如下内容: “command”的值修改为需要调度的已有Loader作业ID,例如1。 将“workflow.xml”文件上传至 "job.properties" 文件中的HDFS路径。 hdfs dfs -put -f workflow.xml /user/userName/examples/apps/sqoop 执行oozie job命令,运行工作流文件。 oozie job -oozie https://oozie角色的主机名:21003/oozie/ -config job.properties -run 命令参数解释如下: -oozie 实际执行任务的Oozie服务器URL -config 工作流属性文件 -run 运行工作流 执行完工作流文件,显示job id表示提交成功,例如:job: 0000021-140222101051722-oozie-omm-W。登录Oozie管理页面,查看运行情况。 使用oozieuser用户,登录Oozie WebUI页面:https://oozie角色的ip地址:21003/oozie 。 Oozie的WebUI界面中,可在页面表格根据jobid查看已提交的工作流信息。
  • 前提条件 Loader和Oozie组件及客户端已经安装,并且正常运行。 已创建或获取访问Oozie服务的人机用户账号及密码。 该用户需要从属于hadoop、supergroup、hive组,同时添加Oozie的角色操作权限。如果使用Hive多实例,该用户还需要从属于具体的Hive实例组,如hive3。 用户同时还需要至少有manager_viewer权限的角色。 获取运行状态的Oozie服务器(任意实例)URL,如“https://10.1.130.10:21003/oozie”。 获取运行状态的Oozie服务器主机名,如“10-1-130-10”。 获取Yarn ResourceManager主节点IP,如10.1.130.11。 创建需要调度的Loader作业,并获取该作业ID。
  • 操作场景 频繁的数据获取导致在存储目录中产生许多零碎的CarbonData文件。由于数据排序只在每次加载时进行,所以,索引也只在每次加载时执行。这意味着,对于每次加载都会产生一个索引,随着数据加载数量的增加,索引的数量也随之增加。由于每个索引只在一次加载时工作,索引的性能被降低。CarbonData提供加载压缩。压缩过程通过合并排序各segment中的数据,将多个segment合并为一个大的segment。
  • 操作描述 有Minor合并、Major合并和Custom合并三种类型。 Minor合并: 在Minor合并中,用户可指定合并数据加载的数量。如果设置了参数“carbon.enable.auto.load.merge”,每次数据加载都可触发Minor合并。如果任意segment均可合并,那么合并将于数据加载时并行进行。 Minor合并有两个级别。 Level 1:合并未合并的segment。 Level 2:合并已合并的segment,以形成更大的segment。 Major合并: 在Major合并中,许多segment可以合并为一个大的segment。用户将指定合并尺寸,将对未达到该尺寸的segment进行合并。Major合并通常在非高峰时段进行。 Custom合并: 在Custom合并中,用户可以指定几个segment的id合并为一个大的segment。所有指定的segment的id必须存在并且有效,否则合并将会失败。Custom合并通常在非高峰时段进行。 具体的命令操作,请参考ALTER TABLE COMPACTION。 表1 合并参数 参数 默认值 应用类型 描述 carbon.enable.auto.load.merge false Minor 数据加载时启用合并。 “true”:数据加载时自动触发segment合并。 “false”:数据加载时不触发segment合并。 carbon.compaction.level.threshold 4,3 Minor 对于Minor合并,该属性参数决定合并segment的数量。 例如,如果该参数设置为“2,3”,在Level 1,每2个segment触发一次Minor合并。在Level2,每3个Level 1合并的segment将被再次合并为新的segment。 合并策略根据实际的数据大小和可用资源决定。 有效值为0-100。 carbon.major.compaction.size 1024mb Major 通过配置该参数可配置Major合并。低于该阈值的segment之和将被合并。 例如,如果该阈值是1024MB,且有5个大小依次为300MB,400MB,500MB,200MB,100MB的segment用于Major合并,那么只有相加的总数小于阈值的segment会被合并,也就是300+400+200+100 = 1000MB的segment会被合并,而500MB的segment将会被跳过。 carbon.numberof.preserve.segments 0 Minor/Major 如果用户希望从被合并的segment中保留一定数量的segment,可通过该属性参数进行设置。 例如,“carbon.numberof.preserve.segments”=“2”,那么最新的2个segment将不会包含在合并中。 默认不保留任何segment。 carbon.allowed.compaction.days 0 Minor/Major 合并将合并在指定的配置天数中加载的segment。 例如,如果配置为“2”,那么只有在2天的时间框架中被加载的segment可以被合并。在2天以外被加载的segment将不被合并。 默认为禁用。 carbon.number.of.cores.while.compacting 2 Minor/Major 在合并过程中写入数据时所用的核数。配置的核数越大合并性能越好。如果CPU资源充足可以增加此值。 carbon.merge.index.in.segment true SEGMENT_INDEX 如果设置为true,则一个segment中所有Carbon索引文件(.carbonindex)将合并为单个Carbon索引合并文件(.carbonindexmerge)。 这增强了首次查询性能。
  • 跨域关键技术和优势 无单点瓶颈:HSFabric可进行水平扩展,多通道并行传输,速率最大化,跨地域延迟不再成为瓶颈。 更好地计算资源利用:将数据压缩,序列化的任务下推到Worker并行计算。 高效序列化:优化数据序列化格式,同等数据量级下,更低的数据传输量。 流式传输:基于HTTP 2.0 stream, 保证HTTP协议通用性的同时,减少大量数据传输中RPC 重复调用。 断点续传:防止数据传输过程中连接异常断开后重传大量数据。 流量管控:支持按地区限制数据传输所占用的网络带宽,避免在跨地域有限带宽场景下因流量独占而影响其他业务的正常使用。
  • 跨源功能使用指导 HetuEngine能够支持多种数据源的快速联合查询并提供可视化的数据源配置、管理页面,可通过HSConsole界面快速添加如下数据源,配置数据源前请先参考HetuEngine交互查询引擎概述: 添加Hive数据源 添加Hudi数据源 添加ClickHouse数据源 添加GAUSSDB数据源 添加HBase数据源 添加跨集群HetuEngine数据源 添加IoTDB数据源 添加MySQL数据源
  • 解决方法 针对avro格式表查询报错,根本原因是avro格式表schema不匹配导致,需要考虑增量和存量avro格式表查询两个场景: 增量avro格式表,需要创建表之前设置参数spark.sql.forceConvertSchema.enabled=true,会将avro表格式强转指定数据类型,一次性修改schema。 存量avro格式表,查询avro表之前设置参数spark.sql.forceConvertSchema.enabled=true,如果查询失败,可能avro格式表schema被缓存,执行refresh table命令,清除缓存后再设置参数进行查询,会将avro表格式强转指定数据类型,客户端临时修改schema。
  • 操作场景 开启级联授权功能的集群极大地提升了鉴权易用性,用户只需在Ranger页面上对业务表进行一次授权,系统就会自动细粒度关联数据存储源的权限,不需要感知表的存储路径,无需进行二次授权。同时也补齐了基于存算分离授权功能缺陷,可以在Ranger上实现对存算分离表的授权鉴权。Hive表的级联授权功能主要体现为: 开启Ranger级联授权后,Ranger中创建策略对表授权时,只需创建表的Hive策略,无需对表存储源进行二次授权。 针对已授权的库/表,当存储源发生变动时,周期同步关联新存储源HDFS/OBS,生成对应权限。 不支持对视图表进行级联授权。 仅支持对数据库/表进行级联授权操作,不支持对分区做级联权限,如果分区路径不在表路径下,则需要用户手动授权分区路径。 不支持对Hive Ranger策略中的“Deny Conditions”进行级联授权,即“Deny Conditions”的权限仅限制表权限,不能生成HDFS/OBS存储源端的权限。 不支持在Hive Ranger中创建“database”为“*”且“table”为“*”的策略。 级联授权生成的HDFS/OBS存储源端的权限弱于HDFS Ranger策略的权限,即如果已经对表的HDFS存储源设置了HDFS Ranger权限,则级联权限将不会生效。 不支持对存储源为OBS的表级联授权后直接进行alter操作,需要给对应用户组额外授予OBS表路径的父目录的“Read”和“Write”权限才能使用alter功能,且用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败,可参考用户组管理修改用户组信息。 针对OBS存储源,需满足以下条件,否则OBS表将授权失败: 集群中必须已安装Guardian服务。 OBS表的授权只能针对用户组。 仅支持安全模式集群的OBS级联授权。
  • FlinkSQL与ClickHouse数据类型对应关系 FlinkSQL数据类型 ClickHouse数据类型 BOOLEAN UInt8 TINYINT Int8 SMALLINT Int16 INTEGER Int32 BIGINT Int64 FLOAT Float32 DOUBLE Float64 CHAR String VARCHAR String VARBINARY FixedString DATE Date TIMESTAMP DateTime DECIMAL Decimal
  • 参数调优 修改服务配置参数,请参考修改集群服务配置参数。调优参数请参考表1。 表1 调优参数 配置参数 缺省值 调优场景 num.recovery.threads.per.data.dir 10 在Kafka启动过程中,数据量较大情况下,可调大此参数,可以提升启动速度。 background.threads 10 Broker后台任务处理的线程数目。数据量较大的情况下,可适当调大此参数,以提升Broker处理能力。 num.replica.fetchers 1 副本向Leader请求同步数据的线程数,增大这个数值会增加副本的I/O并发度。 num.io.threads 8 Broker用来处理磁盘I/O的线程数目,这个线程数目建议至少等于硬盘的个数。 KAFKA_HEAP_OPTS -Xmx6G -Xms6G Kafka JVM堆内存设置。当Broker上数据量较大时,应适当调整堆内存大小。
  • 回答 创建租户的时候需要关联HBase服务和Yarn队列。 例如: 新建用户user并绑定租户同名的角色。 用户user需要使用bulkload功能还需要额外权限。 以下以用户user为例: 参见“批量导入数据”章节举例,以下是一些差异点。 将数据文件目录建在“/tmp”目录下,执行以下命令: hdfs dfs -mkdir /tmp/datadirImport hdfs dfs -put data.txt /tmp/datadirImport 生成HFile的时候使用HDFS的“/tmp”目录: hbase com.huawei.hadoop.hbase.tools.bulkload.ImportData -Dimport.skip.bad.lines=true -Dimport.separator=',' -Dimport.bad.lines.output=/tmp/badline -Dimport.hfile.output=/tmp/hfile configuration.xml ImportTable /tmp/datadirImport 导入HFile的时候使用HDFS的“/tmp”目录: hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/hfile ImportTable
  • 功能介绍 AddDoublesUDF主要用来对两个及多个浮点数进行相加,在该样例中可以掌握如何编写和使用UDF。 一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF”。 一个普通UDF必须至少实现一个evaluate()方法,evaluate函数支持重载。 开发自定义函数需要在工程中添加“hive-exec-*.jar”依赖包,可从Hive服务的安装目录下获取,例如在“${BIGDATA_HOME}/components/FusionInsight_HD_*/Hive/disaster/plugin/lib/”目录下获取。
  • 如何使用 在客户端安装节点,把以上程序打包成AddDoublesUDF.jar,并上传到HDFS指定目录下(例如“/user/hive_examples_jars”)。 创建函数的用户与使用函数的用户都需要具有该文件的可读权限。 示例语句: hdfs dfs -put ./hive_examples_jars /user/hive_examples_jars hdfs dfs -chmod 777 /user/hive_examples_jars 判断集群的认证模式。 安全模式,需要使用一个具有Hive管理权限的用户登录beeline客户端,执行如下命令: kinit Hive业务用户 beeline set role admin; 普通模式,执行如下命令: beeline -n Hive业务用户 在Hive Server中定义该函数,以下语句用于创建永久函数: CREATE FUNCTION addDoubles AS 'com.xxx.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar'; 其中addDoubles是该函数的别名,用于SELECT查询中使用;xxx通常为程序开发的组织名称。 以下语句用于创建临时函数: CREATE TEMPORARY FUNCTION addDoubles AS 'com.xxx.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar'; addDoubles是该函数的别名,用于SELECT查询中使用。 关键字TEMPORARY说明该函数只在当前这个Hive Server的会话过程中定义使用。 在Hive Server中使用该函数,执行SQL语句: SELECT addDoubles(1,2,3); 如果重新连接客户端再使用函数出现[Error 10011]的错误,可执行reload function;命令后再使用该函数。 在Hive Server中删除该函数,执行SQL语句: DROP FUNCTION addDoubles;
  • 操作步骤 以Hive客户端安装用户登录源端集群安装客户端的节点。 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,请用户根据实际情况修改。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群开启了Kerberos认证,执行以下命令认证用户,否则跳过此步骤。 kinit Hive业务用户 执行以下命令登录Hive客户端。 beeline 执行以下命令创建数据库“dump_db”。 create database dump_db; 执行以下命令切换到“dump_db”数据库。 use dump_db; 执行以下命令在“dump_db”中创建表“test”。 create table test(id int); 执行以下命令向表“test”中插入数据。 insert into test values(123); 执行以下命令将数据库“dump_db”设置为复制策略的源。 alter database dump_db set dbproperties ('repl.source.for'='replpolicy1'); 执行alter命令修改数据库属性时,用户需要对该数据库拥有对应权限。权限设置方式如下: 集群未启用Ranger鉴权,需登录FusionInsight Manager授予该用户所属角色管理员权限,详细操作请参考创建Hive角色章节。 集群启用了Ranger鉴权,需参考添加Hive的Ranger访问权限策略章节授予用户对应数据库的Repl Dump/Load操作权限。 删除设置了复制策略源的数据库时,需要先将该数据库的复制策略源设置为空,再对数据库执行删除操作,否则无法删除。将数据库复制策略源设置为空的命令如下: alter database dump_db set dbproperties ('repl.source.for'=''); 执行以下命令将“dump_db”导出到目标集群的“/user/hive/test”目录下。 repl dump dump_db with ('hive.repl.rootdir'='hdfs://haclusterX/user/hive/test'); “haclusterX”为新增的自定义参数“dfs.namenode.rpc-address.haclusterX”中的“haclusterX”。 指定导出目录时需要确保当前用户对该目录拥有读写权限。 以Hive客户端安装用户登录目标集群安装客户端的节点,并执行2-5。 执行以下命令将“/user/hive/test”目录下的“dump_db”数据库的数据导入到“load_db”数据库中。 repl load load_db from '/user/hive/repl'; 通过repl load导入数据库,指定数据库名称时需要注意以下情况: 指定的数据库不存在,在导入的过程中会创建对应的数据库; 指定的数据库已存在,且该数据库的“hive.repl.ckpt.key”属性值与导入的路径一致,则跳过导入操作。 指定的数据库已存在,但是该数据库下不存在任何表和functions,导入的过程中只将源数据库下的表导入到当前数据库中;如果该数据库下存在表或functions会导入失败。
  • 样例 通过“CSV文件输入”算子,生成十二个字段。 源文件如下: 创建ClickHouse表的语句如下: CREATE TABLE IF NOT EXISTS testck4 ON CLUSTER default_cluster( a Int32, b VARCHAR(100) NOT NULL, c char(100), d DateTime, e DateTime, f DateTime, g smallint, h bigint, l Float32, j Float64, k decimal(10,2), m boolean ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/testck4', '{replica}') PARTITION BY toYYYYMM(d)ORDER BY a; 配置“ClickHouse输出”算子,如下图: 作业执行成功后,查看testck4表中数据:
  • 样例 以sqlserver 2014为例,创建测试表test: create table test (id int, name text, value text); 往测试表中插入三条数据: insert into test values (1,'zhangshan','zhang'); insert into test values (2,'lisi','li'); insert into test values (3,'wangwu','wang'); 查询表: 配置“表输入”算子,生成三个字段: 设置了数据连接器后,可以单击“自动识别”,系统将自动读取数据库中的字段,可根据需要选择添加,然后根据业务场景手动进行完善或者修正即可,无需逐一手动添加。 此操作会覆盖表格内已有数据。 单击“自动识别”后,建议手动检查系统自动识别出的字段类型,确保与表中实际的字段类型相符合。 例如Oracle数据库中的“date”类型,系统会自动识别为“timestamp”类型,如果不手动处理会导致后续Hive表在查询数据时报错。 配置输出算子,输出到HDFS/OBS,结果如下:
  • 使用S3表函数 登录主OMS节点。 执行以下命令获取OBS内的存储数据。 select * from S3(path, [ak, sk,] format, structure, [compression]) path:访问域名/OBS文件路径,登录OBS管理控制台,在左侧导航栏单击“并行文件系统”,在“并行文件系统”页面单击对应的文件系统名称,在“文件”页面单击文件名称,文件“链接”即path路径,如图1所示。 图1 文件路径 ak:参数可选,具备访问OBS权限的ak。 sk:参数可选,具备访问OBS权限的sk。 format :文件的格式。 structure:表的结构。 compression:参数可选,压缩类型。
  • 配置Hive UDF 用户通过在配置文件“udf.properties”中添加注册信息来注册Hive UDF,需按“函数名称 类路径”格式添加每一行内容: 以“udf.properties” 为例,已明确要注册的四个Hive UDF: booleanudf io.hetu.core.hive.dynamicfunctions.examples.udf.BooleanUDF shortudf io.hetu.core.hive.dynamicfunctions.examples.udf.ShortUDF byteudf io.hetu.core.hive.dynamicfunctions.examples.udf.ByteUDF intudf io.hetu.core.hive.dynamicfunctions.examples.udf.IntUDF 如果用户添加的Hive UDF注册信息有误,比如错误的格式或者不存在的类路径,系统将忽略这些错误的注册信息,并打印相应日志。 如果用户注册重复的Hive UDF,系统将只注册一次,并忽略重复的注册。 如果用户注册的Hive UDF与系统内部注册的相同,系统将会发生异常并无法正常启动。解决该异常需要用户删除对应的Hive UDF注册信息。
  • 回答 使用操作系统命令lsof或者netstat发现大量TCP连接处于CLOSE_WAIT状态,且连接持有者为HBase RegionServer,可能导致网络端口耗尽或HDFS连接超限,那样可能会导致其他服务不稳定。HBase CLOSE_WAIT现象为HBase机制。 HBase CLOSE_WAIT产生原因:HBase数据以HFile形式存储在HDFS上,这里可以叫StoreFiles,HBase作为HDFS的客户端,HBase在创建StoreFile或启动加载StoreFile时创建了HDFS连接,当创建StoreFile或加载StoreFile完成时,HDFS方面认为任务已完成,将连接关闭权交给HBase,但HBase为了保证实时响应,有请求时就可以连接对应数据文件,需要保持连接,选择不关闭连接,所以连接状态为CLOSE_WAIT(需客户端关闭)。 什么时候会创建StoreFile:当HBase执行Flush时。 什么时候执行Flush:HBase写入数据首先会存在内存memstore,只有内存使用达到阈值或手动执行flush命令时会触发flush操作,将数据写入HDFS。 解决方法: 由于HBase连接机制,如果想减小HBase端口占用,则需控制StoreFile数量,具体可以通过触发HBase的compaction动作完成,即触发HBase文件合并,方法如下: 方法1:使用HBase shell客户端,在客户端手动执行major_compact操作。 方法2:编写HBase客户端代码,调用HBaseAdmin类中的compact方法触发HBase的compaction动作。 如果compact无法解决HBase端口占用现象,说明HBase使用情况已经达到瓶颈,需考虑如下几点: table的Region数初始设置是否合适。 是否存在无用数据。 如果存在无用数据,可删除对应数据以减小HBase存储文件数量,如果以上情况都不满足,则需考虑扩容。
  • 操作步骤 原则一:充分利用集群资源。 Job运行时,会让所有的节点都有任务处理,且处于繁忙状态,这样才能保证资源充分利用,任务的并发度达到最大。可以通过调整处理的数据量大小,以及调整map和reduce个数来实现。 Reduce个数的控制使用“mapreduce.job.reduces”。 Map个数取决于使用了哪种InputFormat,以及待处理的数据文件是否可分割。默认的TextFileInputFormat将根据block的个数来分配map数(一个block一个map)。通过如下配置参数进行调整。 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 参数 描述 默认值 mapreduce.input.fileinputformat.split.maxsize map输入信息应被拆分成的数据块的最大大小。 由用户定义的分片大小的设置及每个文件block大小的设置,可以计算分片的大小。计算公式如下: splitSize = Math.max(minSize, Math.min(maxSize, blockSize)) 如果maxSize设置大于blockSize,那么每个block就是一个分片,否则就会将一个block文件分隔为多个分片,如果block中剩下的一小段数据量小于splitSize,还是认为它是独立的分片。 - mapreduce.input.fileinputformat.split.minsize 可以设置数据分片的数据最小值。 0 原则二:控制reduce阶段在一轮中完成。 避免以下两种场景: 大部分的reduce在第一轮运行完后,剩下唯一一个reduce继续运行。这种情况下,这个reduce的执行时间将极大影响这个job的运行时间。因此需要将reduce个数减少。 所有的map运行完后,只有个别节点有reduce在运行。这时候集群资源没有得到充分利用,需要增加reduce的个数以便每个节点都有任务处理。 原则三:每个task的执行时间要合理。 如果一个job,每个map或reduce的执行时间只有几秒钟,就意味着这个job的大部分时间都消耗在task的调度和进程启停上了,因此需要增加每个task处理的数据大小。建议一个task处理时间为1分钟。 控制单个task处理时间的大小,可以通过如下配置来调整。 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 参数 描述 默认值 mapreduce.input.fileinputformat.split.maxsize map输入信息应被拆分成的数据块的最大大小。 由用户定义的分片大小的设置及每个文件block大小的设置,可以计算分片的大小。计算公式如下: splitSize = Math.max(minSize, Math.min(maxSize, blockSize)) 如果maxSize设置大于blockSize,那么每个block就是一个分片,否则就会将一个block文件分隔为多个分片,如果block中剩下的一小段数据量小于splitSize,还是认为它是独立的分片。 - mapreduce.input.fileinputformat.split.minsize 可以设置数据分片的数据最小值。 0
  • 日志级别 HBase中提供了如表2所示的日志级别。日志级别优先级从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 FATAL FATAL表示当前事件处理出现严重错误信息,可能导致系统崩溃。 ERROR ERROR表示当前事件处理出现错误信息,系统运行出错。 WARN WARN表示当前事件处理存在异常信息,但认为是正常范围,不会导致系统出错。 INFO INFO表示记录系统及各事件正常运行状态信息 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 进入HBase服务参数“全部配置”界面,具体操作请参考修改集群服务配置参数。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后立即生效,不需要重启服务。
  • 操作步骤 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger WebUI界面。 在首页中单击“CDL”区域的组件插件名称,例如“CDL”。 单击“Add New Policy”,添加CDL权限控制策略。 根据业务需求配置相关参数。 表1 CDL权限参数 参数名称 描述 Policy Type Access。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Label 为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。 job 配置当前策略适用的job名,可以填写多个值。这里支持通配符,例如:test、test*、*。 “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Allow Conditions 策略允许条件,配置本策略内允许的权限及例外,例外条件优先级高于正常条件。 在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的Role、用户组或用户。 单击“Add Conditions”,添加策略适用的IP地址范围,单击“Add Permissions”,添加对应权限。 Create: 创建权限。 Execute:执行权限。 Delete: 删除权限。 Update:更新权限。 Get:获取信息权限。 Select/Deselect All:全选/取消全选。 如需添加多条权限控制规则,可单击按钮添加。 如需当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”,这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略,它还可以基于原始策略创建子策略。 Deny Conditions 策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类型,拒绝条件的优先级高于“Allow Conditions”中配置的允许条件。 表2 设置权限 任务场景 角色授权操作 设置CDL管理员权限 在首页中单击“CDL”区域的组件插件名称,例如“CDL”。 分别选择“Policy Name”为“all - job”、“all - link”、“all - driver”、“all - env”的策略,单击按钮编辑策略。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL作业的所有管理权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL作业的创建权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL作业的删除权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL作业的信息获取权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL作业的执行权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Execute”。 设置用户对CDL数据连接的所有管理权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL数据连接的创建权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL数据连接的删除权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL数据连接的更新权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL数据连接的信息获取权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL驱动的所有管理权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL驱动的删除权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL驱动的更新权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL驱动的信息获取权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL环境变量的所有管理权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL环境变量的创建权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL环境变量的删除权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL环境变量的更新权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL环境变量的信息获取权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 (可选)添加策略有效期。在页面右上角单击“Add Validity period”,设置“Start Time”和“End Time”,选择“Time Zone”。单击“Save”保存。如需添加多条策略有效期,可单击按钮添加。如需删除策略有效期,可单击按钮删除。 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。 如需禁用某条策略,可单击按钮编辑策略,设置策略开关为“Disabled”。 如果不再使用策略,可单击按钮删除策略。
共100000条