华为云用户手册

  • 回答 这是RM的使用限制,应用程序运行过程中移动到别的队列,此时RM重启,RM并不会在状态存储中存储新队列的信息。 假设用户提交一个MR任务到叶子队列test11上。当任务运行时,删除叶子队列test11,这时提交队列自动变为lost_and_found队列(找不到队列的任务会被放入lost_and_found队列中),任务暂停运行。要启动该任务,用户将任务移动到叶子队列test21上。在将任务移动到叶子队列test21后,任务继续运行,此时RM重启,重启后显示提交队列为lost_and_found队列,而不是test21队列。 发生上述情况的原因是,任务未完成时,RM状态存储中存储的还是应用程序移动前的队列状态。唯一的解决办法就是等RM重启后,再次移动应用程序,将新的队列状态信息写入状态存储中。
  • 回答 这是一种误操作的异常情况,需要手动删除对应表的元数据后重试。 例如: 执行以下命令进入控制台: source ${BIGDATA_HOME}/ FusionInsight _BASE_8.1.0.1/install/FusionInsight-dbservice-2.7.0/.dbservice_profile gsql -p 20051 -U hive -d hivemeta -W HiveUser@ 执行 delete from tbls where tbl_id='xxx';
  • 操作场景 本章节内容适用于 MRS 3.x及后续版本。 增加Broker的存储目录时,MRS集群管理员需要在FusionInsight Manager中修改Broker的存储目录,以保证Kafka正常工作,新创建的主题分区将在分区最少的目录中生成。适用于以下场景: 由于Kafka不感知磁盘容量,建议各Broker实例配置的磁盘个数和容量保持一致。 更改Broker角色的存储目录,所有Broker实例的存储目录将同步修改。 更改Broker单个实例的存储目录,只对单个实例生效,其他节点Broker实例存储目录不变。
  • 参数说明 下表仅列举了部分常用参数,实际参数以Manager页面为准,参数详情请参见官网https://docs.cloudera.com/documentation/enterprise/6/properties/6.3/topics/cm_props_cdh630_impala.html。 表1 Impala常用参数 配置参数 说明 默认值 范围 impalad.customized.configs impalad进程的自定义配置项。 - - --enable_ldap_auth 是否开启ldap认证。 false true或false --ldap_bind_pattern ldap userDNPattern 例如:cn=%s,ou=People,dc=huawei,dc=com - - --ldap_passwords_in_clear_ok 如果设置为true,将允许ldap密码在网络上明文发送(不含TLS/SSL)。 false true或false --ldap_uri-ip ldap ip - - --ldap_uri-port ldap port 389 - --max_log_files 进程日志的最大文件个数。 10 - --max_log_size 进程的日志文件大小最大值,单位 MB。 200 - statestored.customized.configs Statestored进程的自定义配置项。 - - catalogd.customized.configs Catalogd进程的自定义配置项。 - -
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“DistCp”按钮,将其拖到操作区中。 当前DistCp操作是否是跨集群操作。 是,执行4。 否,执行7。 对两个集群进行跨Manager集群互信。 在弹出的“Distcp”窗口中配置“源”的值,例如“hdfs://hacluster/user/admin/examples/input-data/text/data.txt”。配置“目标”的值,例如“hdfs://target_ip:target_port/user/admin/examples/output-data/distcp-workflow/data.txt”。然后单击“添加”。 单击右上角的配置按钮,在打开的“属性”页签配置界面中,单击“属性+”,在左边文本框中填写属性名称“oozie.launcher.mapreduce.job.hdfs-servers”,在右边文本框中填写属性值“hdfs://source_ip:source_port,hdfs://target_ip:target_port”,执行8。 source_ip:源集群的HDFS的NameNode的业务地址。 source_port:源集群的HDFS的NameNode的端口号。 target_ip:目标集群的HDFS的NameNode的业务地址。 target_port:目标集群的HDFS的NameNode的端口号。 在弹出的“Distcp”窗口中配置“源”的值,例如“/user/admin/examples/input-data/text/data.txt”。配置“目标”的值,例如“/user/admin/examples/output-data/distcp-workflow/data.txt”。然后单击“添加”。 单击右上角的配置按钮,在打开的配置界面中,单击“删除+”,添加删除目录,例如“/user/admin/examples/output-data/distcp-workflow”。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“Distcp-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。
  • Hive支持ZSTD压缩格式 ZSTD(全称为Zstandard)是一种开源的无损数据压缩算法,其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式,本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC,RCFile,TextFile,JsonFile,Parquet,Squence, CS V。 本特性仅适用于MRS 3.1.2及之后版本。 ZSTD压缩格式的建表方式如下: ORC存储格式建表时可指定TBLPROPERTIES("orc.compress"="zstd"): create table tab_1(...) stored as orc TBLPROPERTIES("orc.compress"="zstd"); Parquet存储格式建表可指定TBLPROPERTIES("parquet.compression"="zstd"): create table tab_2(...) stored as parquet TBLPROPERTIES("parquet.compression"="zstd"); 其他格式或通用格式建表可执行设置参数指定compress,codec为“org.apache.hadoop.io.compress.ZStandardCode”: set hive.exec.compress.output=true; set mapreduce.map.output.compress=true; set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.ZStandardCodec; set mapreduce.output.fileoutputformat.compress=true; set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.ZStandardCodec; set hive.exec.compress.intermediate=true; create table tab_3(...) stored as textfile; ZSTD压缩格式的表和其他普通压缩表的SQL操作没有区别,可支持正常的增删查及聚合类SQL操作。 父主题: Hive数据存储及加密配置
  • 操作步骤 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger WebUI界面。 在首页中单击“HBASE”区域的组件插件名称如“HBase”。 单击“Add New Policy”,添加HBase权限控制策略。 根据业务需求配置相关参数。 表1 HBase权限参数 参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 HBase Table 将适用该策略的表。 可支持通配符“*”,例如“table1:*”表示table1下的所有表。 “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。 说明: Ranger界面上HBase服务插件的“hbase.rpc.protection”参数值必须和HBase服务端的“hbase.rpc.protection”参数值保持一致。具体请参考Ranger界面添加或者修改HBase策略时,无法使用通配符搜索已存在的HBase表。 HBase Column-family 将适用该策略的列族。 “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。 HBase Column 将适用该策略的列。 “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Allow Conditions 策略允许条件,配置本策略内允许的权限及例外。 在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的Role、用户组或用户,单击“Add Conditions”,添加策略适用的IP地址范围,单击“Add Permissions”,添加对应权限。 Read:读权限 Write:写权限 Create:创建权限 Admin:管理权限 Select/Deselect All:全选/取消全选 如需让当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”使这些用户或用户组成为受委托的管理员。被委托的管理员可以更新、删除本策略,还可以基于原始策略创建子策略。 如需添加多条权限控制规则,可单击按钮添加。如需删除权限控制规则,可单击按钮删除。 Exclude from Allow Conditions:配置策略例外条件。 Deny All Other Accesses 是否拒绝其它所有访问。 True:拒绝其它所有访问 False:设置为False,可配置Deny Conditions。 Deny Conditions 策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类似。 拒绝条件的优先级高于“Allow Conditions”中配置的允许条件。 Exclude from Deny Conditions:配置排除在拒绝条件之外的例外规则。 表2 设置权限 任务场景 角色授权操作 设置HBase管理员权限 在首页中单击“HBase”区域的组件插件名称,例如“HBase”。 选择“Policy Name”为“all - table, column-family, column”的策略,单击按钮编辑策略。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 设置用户创建表的权限 在“HBase Table”配置表名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 该用户具有以下操作权限: create table drop table truncate table alter table enable table flush table flush region compact disable enable desc 设置用户写入数据的权限 在“HBase Table”配置表名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Write”。 该用户具有put,delete,append,incr,bulkload等操作权限。 设置用户读取数据的权限 在“HBase Table”配置表名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Read”。 该用户具有get,scan操作权限。 设置用户管理命名空间或表的权限 在“HBase Table”配置表名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Admin”。 该用户具有rsgroup,peer,assign,balance等操作权限。 设置列的读取或写入权限 在“HBase Table”配置表名。 在“HBase Column-family”配置列族名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Read”或者“Write”。 如果用户在hbase shell中执行desc操作,需要同时给该用户赋予hbase:quota表的读权限。 (可选)添加策略有效期。在页面右上角单击“Add Validity period”,设置“Start Time”和“End Time”,选择“Time Zone”。单击“Save”保存。如需添加多条策略有效期,可单击按钮添加。如需删除策略有效期,可单击按钮删除。 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。 如需禁用某条策略,可单击按钮编辑策略,设置策略开关为“Disabled”。 如果不再使用策略,可单击按钮删除策略。
  • 使用coalesce调整分片的数量 coalesce可以调整分片的数量。coalesce函数有两个参数: coalesce(numPartitions: Int, shuffle: Boolean = false) 当shuffle为true的时候,函数作用与repartition(numPartitions: Int)相同,会将数据通过Shuffle的方式重新分区;当shuffle为false的时候,则只是简单的将父RDD的多个partition合并到同一个task进行计算,shuffle为false时,如果numPartitions大于父RDD的切片数,那么分区不会重新调整。 遇到下列场景,可选择使用coalesce算子: 当之前的操作有很多filter时,使用coalesce减少空运行的任务数量。此时使用coalesce(numPartitions, false),numPartitions小于父RDD切片数。 当输入切片个数太大,导致程序无法正常运行时使用。 当任务数过大时候Shuffle压力太大导致程序挂住不动,或者出现linux资源受限的问题。此时需要对数据重新进行分区,使用coalesce(numPartitions, true)。
  • 操作步骤 推荐:使用“SNAPPY”压缩,适用于压缩比和读取效率要求均衡场景。 Create table xx (col_name data_type) stored as orc tblproperties ("orc.compress"="SNAPPY"); 可用:使用“ZLIB”压缩,适用于压缩比要求较高场景。 Create table xx (col_name data_type) stored as orc tblproperties ("orc.compress"="ZLIB"); xx为具体使用的Hive表名。
  • 问题 HDFS调用FileInputFormat的getSplit方法的时候,出现ArrayIndexOutOfBoundsException: 0,日志如下: java.lang.ArrayIndexOutOfBoundsException: 0 at org.apache.hadoop.mapred.FileInputFormat.identifyHosts(FileInputFormat.java:708) at org.apache.hadoop.mapred.FileInputFormat.getSplitHostsAndCachedHosts(FileInputFormat.java:675) at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:359) at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:210) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) at scala.Option.getOrElse(Option.scala:120) at org.apache.spark.rdd.RDD.partitions(RDD.scala:237) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
  • 快速配置常用参数 其他参数在安装集群时已进行了适配,以下参数需要根据使用场景进行调整。以下参数除特别指出外,一般在Spark2x客户端的“spark-defaults.conf”文件中配置。 表1 快速配置常用参数 配置项 说明 默认值 spark.sql.parquet.compression.codec 对于非分区parquet表,设置其存储文件的压缩格式。 在JD BCS erver服务端的“spark-defaults.conf”配置文件中进行设置。 snappy spark.dynamicAllocation.enabled 是否使用动态资源调度,用于根据规模调整注册于该应用的executor的数量。目前仅在YARN模式下有效。 JDBCServer默认值为true,client默认值为false。 false spark.executor.memory 每个Executor进程使用的内存数量,与JVM内存设置字符串的格式相同(例如:512m,2g)。 4G spark.sql.autoBroadcastJoinThreshold 当进行join操作时,配置广播的最大值。 当SQL语句中涉及的表中相应字段的大小小于该值时,进行广播。 配置为-1时,将不进行广播。 10485760 spark.yarn.queue JDBCServer服务所在的Yarn队列。 在JDBCServer服务端的“spark-defaults.conf”配置文件中进行设置。 default spark.driver.memory 大集群下推荐配置32~64g驱动程序进程使用的内存数量,即SparkContext初始化的进程(例如:512m, 2g)。 4G spark.yarn.security.credentials.hbase.enabled 是否打开获取HBase token的功能。如果需要Spark-on-HBase功能,并且配置了安全集群,参数值设置为“true”。否则设置为“false”。 false spark.serializer 用于串行化将通过网络发送或需要缓存的对象的类以序列化形式展现。 Java序列化的默认值适用于任何Serializable Java对象,但运行速度相当慢,所以建议使用org.apache.spark.serializer.KryoSerializer并配置Kryo序列化。可以是org.apache.spark.serializer.Serializer的任何子类。 org.apache.spark.serializer.JavaSerializer spark.executor.cores 每个执行者使用的内核个数。 在独立模式和Mesos粗粒度模式下设置此参数。当有足够多的内核时,允许应用程序在同样的worker上执行多个执行程序;否则,在每个worker上,每个应用程序只能运行一个执行程序。 1 spark.shuffle.service.enabled NodeManager中一个长期运行的辅助服务,用于提升Shuffle计算性能。 fasle spark.sql.adaptive.enabled 是否开启自适应执行框架。 false spark.executor.memoryOverhead 每个执行器要分配的堆内存量(单位为兆字节)。 这是占用虚拟机开销的内存,类似于内部字符串,其他内置开销等等。会随着执行器大小(通常为6-10%)而增长。 1GB spark.streaming.kafka.direct.lifo 配置是否开启Kafka后进先出功能。 false
  • 操作步骤 创建工作流,请参考使用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界面查看作业的详细信息、日志、进度等相关内容。
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 表1 配置自定义调度器的WebUI 参数 描述 默认值 hadoop.http.rmwebapp.scheduler.page.classes 在RM WebUI中为自定义调度器加载相应的web页面。仅当“yarn.resourcemanager.scheduler.class”配置为自定义调度器时此配置项生效。 - yarn.http.rmwebapp.external.classes 在RM的Web服务中加载用户自定义的web应用。 -
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“数据流”按钮,将其拖到操作区中。 在弹出的“Streaming”窗口中配置“Mapper”的值,例如“/bin/cat”。配置“Reducer”的值,例如“/usr/bin/wc”。然后单击“添加”。 单击“文件+”,添加运行所需的文件。 例如“/user/oozie/share/lib/mapreduce-streaming/hadoop-streaming-xxx.jar”和“/user/oozie/share/lib/mapreduce-streaming/oozie-sharelib-streaming-5.1.0.jar”。 单击右上角的配置按钮。在打开的配置界面中,单击“删除+”,添加删除目录,例如“/user/admin/examples/output-data/streaming_workflow”。 单击“属性+”,添加下列属性。 左边框填写属性名称“mapred.input.dir”,右边框填写属性值“/user/admin/examples/input-data/text”。 左边框填写属性名称“mapred.output.dir”,右边框填写属性值“/user/admin/examples/output-data/streaming_workflow”。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“Streaming-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。
  • 超时参数 表2 Broker相关超时参数 参数名称 参数说明 默认值 影响分析 controller.socket.timeout.ms Controller连接Broker的超时时间。单位:毫秒。 30000 Controller连接Broker的超时时间,一般不需要调整。 group.max.session.timeout.ms Consumer注册时允许的最大会话超时时间。单位:毫秒。 1800000 允许Consumer配置的session.timeout.ms的最大值(不包含此值)。 group.min.session.timeout.ms Consumer注册时允许的最小会话超时时间。单位:毫秒。 6000 允许Consumer配置的session.timeout.ms的最小值(不包含此值)。 offsets.commit.timeout.ms Offset提交请求的超时时间。单位:毫秒。 5000 Offset提交时被延迟处理的最大超时时间。 replica.socket.timeout.ms 副本数据同步请求的超时时间,配置值不得小于replica.fetch.wait.max.ms。单位:毫秒。 30000 同步线程在发送同步请求之前等待通道建立的最大超时时间,要求配置大于replica.fetch.wait.max.ms。 request.timeout.ms 设置客户端发送连接请求后,等待响应的超时时间。单位:毫秒。 30000 Broker节点上的Controller、Replica线程中传入networkclient连接的超时参数,如果在超时时间内没有接收到响应,那么客户端重新发送,并在达到重试次数后返回请求失败。 transaction.max.timeout.ms 事务允许的最大超时。单位:毫秒。 900000 事务最大超时时间,如果客户端的请求时间超过该值,则Broker将在InitProducerIdRequest中返回一个错误。这样可以防止客户端超时时间过长,而导致消费者无法接收topic。 user.group.cache.timeout.sec 指定缓存中保存用户对应组信息的时间。单位:秒。 300 缓存中用户和组对应关系缓存时间,超过此时间用户信息才会再次通过id -Gn命令查询,在此期间,仅使用缓存中的用户和组对应关系。 zookeeper.connection.timeout.ms 连接ZooKeeper的超时时间。单位:毫秒。 45000 ZooKeeper连接超时时间,这个时间决定了zkclient中初次连接建立过程时允许消耗的时间,超过该时间,zkclient会主动断开。 zookeeper.session.timeout.ms ZooKeeper会话超时时间。如果Broker在此时间内未向ZooKeeper上报心跳,则被认为失效。单位:毫秒。 45000 ZooKeeper会话超时时间。 作用一:这个时间结合传入的ZKURL中ZooKeeper的地址个数,ZooKeeper客户端以(sessionTimeout/传入ZooKeeper地址个数)为连接一个节点的超时时间,超过此时间未连接成功,则尝试连接下一个节点。 作用二:连接建立后,一个会话的超时时间,如ZooKeeper上注册的临时节点BrokerId,当Broker被停止,则该BrokerId,会经过一个sessionTimeout才会被ZooKeeper清理。 表3 Producer相关超时参数 配置名称 说明 默认值 影响分析 request.timeout.ms 指定发送消息请求的请求超时时间。单位:毫秒。 30000 请求超时时间,出现网络问题时,需调大此参数;配置过小,则容易出现Batch Expire异常。 表4 Consumer相关超时参数 配置名称 说明 默认值 影响分析 connections.max.idle.ms 空闲连接的保留时间。单位:毫秒 600000 空闲连接的保留时间,连接空闲时间大于此时间,则会销毁该连接,有需要时重新创建连接。 request.timeout.ms 消费请求的超时时间。单位:毫秒。 30000 请求超时时间,请求超时会失败然后不断重试。
  • 常用参数 表1 参数说明 配置参数 说明 缺省值 log.dirs Kafka数据存储目录列表,以逗号分隔多个目录。 %{@auto.detect.datapart.bk.log.logs} KAFKA_HEAP_OPTS Kafka启动Broker时使用的jvm选项。建议根据业务需要进行设置。 -Xmx6G -Xms6G auto.create.topics.enable 是否自动创建Topic,若参数设置为false,发消息前需要通过命令创建Topic。 true default.replication.factor 自动创建Topic时的默认副本数。 2 monitor.preInitDelay 服务启动后,第一次健康检查的延迟时间。如果启动需要较长时间,可以通过调大参数,来完成启动。单位为毫秒。 600000
  • 操作步骤 参数入口:执行批量加载任务时,在BulkLoad命令行中加入如下参数。 表1 增强BulkLoad效率的配置项 参数 描述 配置的值 -Dimporttsv.mapper.class 用户自定义mapper通过把键值对的构造从mapper移动到reducer以帮助提高性能。mapper只需要把每一行的原始文本发送给reducer,reducer解析每一行的每一条记录并创建键值对。 说明: 当该值配置为“org.apache.hadoop.hbase.mapreduce.TsvImporterByteMapper”时,只在执行没有HBASE_CELL_VISIBILITY OR HBASE_CELL_TTL选项的批量加载命令时使用。使用“org.apache.hadoop.hbase.mapreduce.TsvImporterByteMapper”时可以得到更好的性能。 org.apache.hadoop.hbase.mapreduce.TsvImporterByteMapper 和 org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper
  • 使用Hive客户端(MRS 3.x之前版本) 安装客户端,具体请参考安装客户端章节。 以客户端安装用户,登录安装客户端的节点。 执行以下命令,切换到客户端安装目录。 cd /opt/hadoopclient 执行以下命令配置环境变量。 source bigdata_env 根据集群认证模式,完成Hive客户端登录。 安全模式,则执行以下命令,完成用户认证并登录Hive客户端。 kinit 组件业务用户 beeline 普通模式,则执行以下命令,登录Hive客户端,如果不指定组件业务用户,则会以当前操作系统用户登录。 beeline -n 组件业务用户 进行beeline连接后,可以编写并提交HQL语句执行相关任务。如需执行Catalog客户端命令,需要先执行!q命令退出beeline环境。 使用以下命令,执行HCatalog的客户端命令。 hcat -e "cmd" 其中"cmd"必须为Hive DDL语句,如hcat -e "show tables"。 若要使用HCatalog客户端,必须从“组件管理”页面单击“下载客户端”,下载全部服务的客户端。Beeline客户端不受此限制。 由于权限模型不兼容,使用HCatalog客户端创建的表,在HiveServer客户端中不能访问,但可以使用WebHCat客户端访问。 在普通模式下使用HCatalog客户端,系统将以当前登录操作系统用户来执行DDL命令。 退出beeline客户端时请使用!q命令,不要使用“Ctrl + c”。否则会导致连接生成的临时文件无法删除,长期会累积产生大量的垃圾文件。 在使用beeline客户端时,如果需要在一行中输入多条语句,语句之间以“;”分隔,需要将“entireLineAsCommand”的值设置为“false”。 设置方法:如果未启动beeline,则执行beeline --entireLineAsCommand=false命令;如果已启动beeline,则在beeline中执行!set entireLineAsCommand false命令。 设置完成后,如果语句中含有不是表示语句结束的“;”,需要进行转义,例如select concat_ws('\;', collect_set(col1)) from tbl。
  • 新建作业 访问Flink WebUI,请参考访问FlinkServer WebUI界面。 单击“作业管理”进入作业管理页面。 单击“新建作业”,在新建作业页面可选择新建Flink SQL作业或Flink Jar作业,然后填写作业信息,单击“确定”,创建作业成功并进入作业开发界面。 (可选)如果需要立即进行作业开发,可以在作业开发界面进行作业配置。 新建Flink SQL作业 在作业开发界面进行作业开发。 可以单击上方“语义校验”对输入内容校验,单击“SQL格式化”对SQL语句进行格式化。 作业SQL开发完成后,请参考表1设置基础参数,还可根据需要设置自定义参数,然后单击“保存”。 表1 基础参数 参数名称 参数描述 并行度 并行数量。 算子最大并行度 算子最大的并行度。 JobManager内存(MB) JobManager的内存。输入值最小为512。 提交队列 作业提交队列。不填默认提交到default。 taskManager taskManager运行参数。该参数需配置以下内容: slot数量:不填默认是1; 内存(MB):输入值最小为512。 开启CheckPoint 是否开启CheckPoint。开启后,需配置以下内容: 时间间隔(ms):必填; 模式:必填; EXACTLY_ONCE:数据或事件仅会被算子处理一次; AT_LEAST_ONCE:数据或事件会被算子至少处理一次; 最小间隔(ms):输入值最小为10; 超时时间:输入值最小为10; 最大并发量:正整数,且不能超过64个字符; 是否清理:是/否; 是否开启增量Checkpoint:是/否。 故障恢复策略 作业的故障恢复策略,包含以下三种,详情请参考配置FlinkServer重启策略。 fixed-delay:需配置“重试次数”和“失败重试间隔(s)”; failure-rate:需配置“最大重试次数”、“时间间隔(min)”和“失败重试间隔(s)”; none:无。 单击左上角“提交”提交作业。 新建Flink Jar作业 单击“选择”,上传本地Jar文件,并参考表2配置参数或添加自定义参数。 表2 参数配置 参数名称 参数描述 本地jar文件 上传jar文件。直接上传本地文件,大小不能超过10M。 Main Class Main-Class类型。 默认:默认根据Jar包文件的Mainfest文件指定类名。 指定:手动指定类名。 类名 类名。 “Main Class”选择“指定”时存在该参数。 类参数 类参数,为Main-Class的参数(参数间用空格分隔)。 并行度 并行数量。 JobManager内存(MB) JobManager的内存。输入值最小为512。 提交队列 作业提交队列。不填默认提交到default。 taskManager taskManager运行参数。该参数需配置以下内容: slot数量:不填默认是1; 内存(MB):输入值最小为512。 单击“保存”保存配置,单击“提交”提交作业。 返回作业管理页面,可以查看到已创建的作业名称、类型、状态、作业种类和描述等信息。 作业创建完成后,可在对应作业的“操作”列对作业进行启动、开发、停止、编辑、删除、查看作业详情和Checkpoint故障恢复等操作。 若要使用其他用户在节点上读取已提交的作业相关文件,需确保该用户与提交作业的用户具有相同的用户组和具有对应的FlinkServer应用管理权限角色,如参考创建FlinkServer权限角色勾选“应用查看”。 作业状态为“运行中”的作业可以查看作业详情。 作业状态为“运行失败”、“运行成功”和“停止”的作业可以进行Checkpoint故障恢复。
  • 前提条件 MRS 3.1.0及之后版本在创建集群时已勾选Sqoop组件。 安装客户端,具体请参考安装客户端(3.x及之后版本)。例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。 客户端目录/Sqoop/sqoop/lib下已有对应驱动包(例mysql驱动包mysql-connector-java-5.1.47.jar),如果没有请参考Sqoop1.4.7适配MRS 3.x集群章节中的步骤3下载对应mysql包。
  • Sqoop使用样例 sqoop import(MySQL到HDFS) sqoop import --connect jdbc:mysql://10.100.231.134:3306/test --username root --password xxx --query 'SELECT * FROM component where $CONDITIONS and component_id ="MRS 1.0_002"' --target-dir /tmp/component_test --delete-target-dir --fields-terminated-by "," -m 1 --as-textfile sqoop export (obs到MySQL) sqoop export --connect jdbc:mysql://10.100.231.134:3306/test --username root --password xxx --table component14 -export-dir obs://obs-file-bucket/xx/part-m-00000 --fields-terminated-by ',' -m 1 sqoop import(MySQL到obs) sqoop import --connect jdbc:mysql://10.100.231.134:3306/test --username root --password xxx --table component --target-dir obs://obs-file-bucket/xx --delete-target-dir --fields-terminated-by "," -m 1 --as-textfile sqoop import(MySQL到Hive外obs表) sqoop import --connect jdbc:mysql://10.100.231.134:3306/test --username root --password xxx --table component --hive-import --hive-table component_test01 --fields-terminated-by "," -m 1 --as-textfile
  • 导入或导出数据时缺少MySQL驱动包 若执行sqoop import或sqoop export命令报错“Could not load db driver class: com.mysql.jdbc.Driver”,如图1所示,则表示缺少MySQL驱动包,需在MySQL官网下载对应MySQL驱动包,解压并上传至“客户端安装目录/Sqoop/sqoop/lib”目录下,再执行Sqoop导入或导出数据命令即可 图1 缺少MySQL驱动包报错
  • 操作场景 Broadcast(广播)可以把数据集合分发到每一个节点上,Spark任务在执行过程中要使用这个数据集合时,就会在本地查找Broadcast过来的数据集合。如果不使用Broadcast,每次任务需要数据集合时,都会把数据序列化到任务里面,不但耗时,还使任务变得很大。 每个任务分片在执行中都需要同一份数据集合时,就可以把公共数据集Broadcast到每个节点,让每个节点在本地都保存一份。 大表和小表做join操作时可以把小表Broadcast到各个节点,从而就可以把join操作转变成普通的操作,减少了shuffle操作。
  • 操作场景 此功能适用于Hive组件。 开启此功能后,在执行写目录:insert overwrite directory “/path1/path2/path3” ...时,其中“/path1/path2”目录权限为700且属主为当前用户,“path3”目录不存在,会自动创建“path3”目录,并写数据成功。 上述功能,在Hive参数“hive.server2.enable.doAs”为“true”时已经支持,本次增加当“hive.server2.enable.doAs”为“false”时的功能支持。 本功能参数调整与配置Hive目录旧数据自动移除至回收站添加的自定义参数相同。
  • 操作场景 HDFS Colocation(同分布)是HDFS提供的数据分布控制功能,利用HDFS Colocation接口,可以将存在关联关系或者可能进行关联操作的数据存放在相同的存储节点上。Hive支持HDFS的Colocation功能,即在创建Hive表时,设置表文件分布的locator信息,当使用insert语句向该表中插入数据时会将该表的数据文件存放在相同的存储节点上(不支持其他数据导入方式),从而使后续的多表关联的数据计算更加方便和高效。表格式只支持TextFile和RCFile。 本章节适用于MRS 3.x及后续版本。
  • 配置场景 ORC文件格式是一种Hadoop生态圈中的列式存储格式,它最初产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。和Parquet文件格式类似,它并不是一个单纯的列式存储格式,仍然是首先根据行组分割整个表,在每一个行组内按列进行存储,并且文件中的数据尽可能的压缩来降低存储空间的消耗。矢量化读取ORC格式的数据能够大幅提升ORC数据读取性能。在Spark2.3版本中,SparkSQL支持矢量化读取ORC数据(这个特性在Hive的历史版本中已经得到支持)。矢量化读取ORC格式的数据能够获得比传统读取方式数倍的性能提升。 该特性可以通过下面的配置项开启: “spark.sql.orc.enableVectorizedReader”:指定是否支持矢量化方式读取ORC格式的数据,默认为true。 “spark.sql.codegen.wholeStage”:指定是否需要将多个操作的所有stage编译为一个java方法,默认为true。 “spark.sql.codegen.maxFields”:指定codegen的所有stage所支持的最大字段数(包括嵌套字段),默认为100。 “spark.sql.orc.impl”:指定使用Hive还是Spark SQL native作为SQL执行引擎来读取ORC数据,默认为hive。
  • Ranger用户类型 Ranger中的用户可分为Admin、User、Auditor等类型,不同用户具有的Ranger管理界面查看和操作权限不同。 Admin:Ranger安全管理员,可查看Ranger所有管理页面内容,进行服务权限管理插件及权限访问控制策略的管理操作,可查看审计信息内容,可进行用户类型设置。 Auditor:Ranger审计管理员,可查看服务权限管理插件及权限访问控制策略的内容。 User:普通用户,可以被Ranger管理员赋予具体权限。
  • 配置描述 参数入口: 在应用提交时通过“--conf”设置这些参数,或者在客户端的“spark-defaults.conf”配置文件中调整如下参数。 表1 参数说明 参数 说明 默认值 spark.executor.memoryOverhead 用于指定每个executor的堆外内存大小(MB),增大该参数值,可以防止物理内存超限。该值是通过max(384,executor-memory*0.1)计算所得,最小值为384。 1024
  • 配置场景 Spark Streaming对接Kafka时,当Spark Streaming应用重启后,应用根据上一次读取的topic offset作为起始位置和当前topic最新的offset作为结束位置从Kafka上读取数据的。 Kafka服务的topic的leader异常后,若Kafka的leader和follower的offset相差太大,用户重启Kafka服务,Kafka的follower和leader相互切换,则Kafka服务重启后,topic的offset变小。 若Spark Streaming应用一直在运行,由于Kafka上topic的offset变小,会导致读取Kafka数据的起始位置比结束位置大,这样将无法从Kafka读取数据,应用报错。 若在重启Kafka服务前,先停止Spark Streaming应用,等Kafka重启后,再重启Spark Streaming应用使应用从checkpoint恢复。此时,Spark Streaming应用会记录终止前读取到的offset位置,以此为基准读取后面的数据,而Kafka offset变小(例如从10万变成1万),Spark Streaming会等待Kafka leader的offset增长至10万之后才会去消费,导致新发送的offset在1万至10万之间的数据丢失。 针对上述背景,提供配置Streaming对接Kafka更高级别的可靠性。对接Kafka可靠性功能开启后,上述场景处理方式如下。 若Spark Streaming应用在运行应用时Kafka上topic的offset变小,则会将Kafka上topic最新的offset作为读取Kafka数据的起始位置,继续读取后续的数据。 对于已经生成但未调度处理的任务,若读取的Kafka offset区间大于Kafka上topic的最新offset,则该任务会运行失败。 若任务失败过多,则会将executor加入黑名单,从而导致后续的任务无法部署运行。此时用户可以通过配置“spark.blacklist.enabled”参数关闭黑名单功能,黑名单功能默认为开启。 若Kafka上topic的offset变小后,Spark Streaming应用进行重启恢复终止前未处理完的任务若读取的Kafka offset区间大于Kafka上topic的最新offset,则该任务直接丢弃,不进行处理。 若Streaming应用中使用了state函数,则不允许开启对接Kafka可靠性功能。
  • 操作步骤 创建工作流,请参考使用Hue创建工作流。 在工作流编辑页面,选择“Spark 程序”按钮,将其拖到操作区中。 在弹出的“Spark”窗口配置“Files”,例如“hdfs://hacluster/user/admin/examples/apps/spark2x/lib/oozie-examples.jar”。配置“jar/py name”,例如“oozie-examples.jar” ,配置完成后单击“添加”。 配置“Main class”的值。例如“org.apache.oozie.example.SparkFileCopy”。 单击“参数+”,添加输入输出相关参数。 例如添加: “hdfs://hacluster/user/admin/examples/input-data/text/data.txt” “hdfs://hacluster/user/admin/examples/output-data/spark_workflow” 在“Options list”文本框指定spark参数 , 例如“--conf spark.yarn.archive=hdfs://hacluster/user/spark2x/jars/8.1.0.1/spark-archive-2x.zip --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://hacluster/spark2xJobHistory2x”。 此处版本号“8.1.0.1”为示例,可登录FusionInsight Manager界面,单击右上角的,在下拉框中单击“关于”,在弹框中查看Manager版本号。 单击右上角的配置按钮。配置“Spark Master”的值,例如“yarn-cluster”。配置“Mode”的值,例如“cluster”。 在打开的配置界面中,单击“删除+”,添加删除目录,例如“hdfs://hacluster/user/admin/examples/output-data/spark_workflow”。 单击“属性+”,添加oozie使用的sharelib,左边文本框填写属性名称“oozie.action.sharelib.for.spark”,右边文本框填写属性值“spark2x”。 单击Oozie编辑器右上角的。 保存前如果需要修改作业名称(默认为“My Workflow”),可以直接单击该名称进行修改,例如“Spark-Workflow”。 保存完成后,单击,提交该作业。 作业提交后,可通过Hue界面查看作业的详细信息、日志、进度等相关内容。
共100000条