华为云用户手册

  • 操作步骤 通过调大如下的参数来进行AM调优。 参数入口: 在Yarn客户端的“mapred-site.xml”配置文件中调整如下参数。“mapred-site.xml”配置文件在客户端安装路径的conf目录下,例如“/opt/client/Yarn/config”。 参数 描述 默认值 yarn.app.mapreduce.am.resource.mb 该参数值必须大于下面参数的堆大小。单位:MB 1536 yarn.app.mapreduce.am.command-opts 传递到MapReduce ApplicationMaster的JVM启动参数。 MRS 3.x之前版本:-Xmx1024m -XX:CMSFullGCsBeforeCompaction=1 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -verbose:gc MRS 3.x及之后版本:-Xmx1024m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -verbose:gc -Djava.security.krb5.conf=${KRB5_CONFIG} -Dhadoop.home.dir=${BIGDATA_HOME}/ FusionInsight _HD_xxx/install/FusionInsight-Hadoop-xxx/hadoop
  • 配置描述 参数入口: 请参考修改集群服务配置参数,进入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写数据时的依据的磁盘选择策略参数。搜索“dfs.block.replicator.classname”参数,并将参数的值改为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”。 表1 参数描述 参数 参数说明 dfs.block.replicator.classname 选择副本放置的DataNode的策略。 默认值为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”。 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
  • 配置描述 请参考修改集群服务配置参数,进入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
  • 访问Ranger Admin WebUI 在MRS控制台,单击集群名称进入集群详情页面。 选择“组件管理”。 选择“Ranger”,在“Ranger 概述”中单击“Ranger WebUI”对应的“RangerAdmin”。 进入Ranger WebUI登录界面,MRS 1.9.2版本集群默认用户名/默认密码为admin/admin@12345,MRS 1.9.3版本集群默认用户名/默认密码为admin/ranger@A1!。 首次登录Ranger WebUI界面后请修改用户密码并妥善保存。 用户可以单击右上角的用户名,选择下拉菜单中的“Profile”,并选择“Change Password”修改用户密码。 图1 修改Ranger WebUI登录密码 修改完用户密码后,单击右上角用户名,选择下拉菜单中的“Log Out”,并使用新的密码重新进行登录。
  • 使用ReplicationSyncUp工具 在主集群hbase shell中输入如下命令使用: hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1 replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒(默认值)的睡眠时间没有任何意义,因此将其设置为1(s),使备份过程更快触发。
  • 注意事项 当主集群关闭时,此工具将从ZooKeeper节点(RS znode)获得WAL的处理进度以及WAL的处理队列,并将未复制的队列复制到备集群中。 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。 当RegionServer故障时,主集群的每个RegionServer都会通过watcher收到通知,并尝试锁定故障RegionServer的znode,包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后,它们将从旧位置删除。 在主集群关闭期间,ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据,并且RegionServer znode的wals将被移动到备集群下。
  • 使用Ranger UserSync同步集群节点上的Unix操作系统用户 Ranger UserSync是Ranger中一个重要的组件,它支持将Unix系统用户或LDAP用户同步到Ranger WebUI中,目前MRS服务只支持同步Ranger UserSync进程所在节点上的Unix用户。 登录到UserSync进程所在的节点。 执行useradd命令新增系统用户,例如“testuser”。 图2 新增系统用户testuser 用户添加完成后等待1分钟左右,登录到Ranger WebUI,即可查看到该用户已经同步成功。 图3 用户同步完成
  • 设置HBase和HDFS的句柄数限制 联系集群管理员增加各用户的句柄数。该配置为操作系统的配置,并非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
  • 前提条件 主备集群已经安装并且启动。 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。 当主集群HBase服务关闭时,ZooKeeper和HDFS服务应该启动并运行。 该工具应该由启动HBase进程的系统用户运行。 如果处于安全模式,请确保备用集群的HBase系统用户具有主集群HDFS的读取权限。因为它将更新HBase系统ZooKeeper节点和HDFS文件。 主集群HBase故障后,主集群的ZooKeeper,文件系统和网络依然可用。
  • 场景介绍 HBase本身提供了ImportTsv&LoadIncremental工具来批量加载用户数据。当前提供了HIndexImportTsv来支持加载用户数据的同时可以完成对索引数据的批量加载。HIndexImportTsv继承了HBase批量加载数据工具ImportTsv的所有功能。此外,若在执行HIndexImportTsv工具之前未建表,直接运行该工具,将会在创建表时创建索引,并在生成用户数据的同时生成索引数据。
  • 日志级别 Flume提供了如表2所示的日志级别。 运行日志的级别优先级从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 日志类型 级别 描述 运行日志 FATAL FATAL表示系统运行的致命错误信息。 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入Flume的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后即生效,不需要重启服务。
  • 日志级别 Storm提供了如表2所示的日志级别。 运行日志和审计日志的级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入Storm的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。
  • 操作场景 本章节内容适用于MRS 3.x及后续版本。 使用Storm业务用户提交一个拓扑以后,该任务需要使用提交拓扑的用户身份持续运行。在拓扑运行的过程中,worker进程可能需要正常重启以保持拓扑工作。若业务用户的密码被修改,或密码使用天数超过了默认密码策略指定的最大有效期,则会影响拓扑正常运行。MRS集群管理员需要根据企业安全要求,为Storm业务用户配置独立的密码策略。 如果不为Storm业务用户配置独立的密码策略,在修改业务用户密码以后,可以删除旧的拓扑并重新提交,使拓扑继续运行。
  • 操作步骤 根据业务情况,准备好客户端,登录安装客户端的节点。 请根据客户端所在位置,参考安装客户端章节,登录安装客户端的节点。 执行以下命令,切换到客户端目录,例如“/opt/hadoopclient”。 cd /opt/hadoopclient 执行以下命令,配置环境变量。 source bigdata_env 启用Kerberos认证的集群,执行以下命令认证用户身份。未启用Kerberos认证的集群无需执行。 kinit Storm用户 执行以下命令,提交Storm拓扑: storm jar 拓扑包路径 拓扑Main方法的类名称 拓扑名称 界面提示以下信息表示提交成功: Finished submitting topology: topo1 执行以下命令,查看Storm中的拓扑。启用Kerberos认证的集群,只有属于“stormadmin”或“storm”的用户可以查看所有拓扑。 storm list 执行以下命令,删除Storm中的拓扑。 storm kill 拓扑名称
  • 日志级别 Kafka提供了如表3所示的日志级别。 运行日志的级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表3 日志级别 级别 描述 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入Kafka的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。
  • 配置描述 在客户端的“mapred-site.xml”配置文件中调整如下参数。 “mapred-site.xml”配置文件在客户端安装路径的conf目录下,例如“/opt/client/Yarn/config”。 表1 参数说明 参数 描述 默认值 mapreduce.reduce.shuffle.max-host-failures MR任务在reduce过程中读取远端shuffle数据允许失败的次数。当设置次数大于5时,可以降低客户端应用的失败率。该参数适用于MRS 3.x版本。 5 mapreduce.client.submit.file.replication MR任务在运行时依赖的相关job文件在HDFS上的备份。当备份数大于10时,可以降低客户端应用的失败率。 10
  • Topic和Partition的划分关系说明 假设集群中部署了K个Kafka节点,每个节点上配置的磁盘个数为N,每块磁盘大小为M,集群共有n个Topic(T1,T2…Tn),并且其中第m个Topic的每秒输入数据总流量为X(Tm) MB/s,配置的副本数为R(Tm),配置数据保存时间为Y(Tm)小时,那么整体必须满足: 假设单个磁盘大小为M,该磁盘上有n个Partition(P0,P1……Pn),并且其中第m个Partition的每秒写入数据流量为Q(Pm) MB/s(计算方法:所属Topic的数据流量除以Partition数) 、数据保存时间为T(Pm)小时,那么单个磁盘必须满足: 根据吞吐量粗略计算,假设生产者可以达到的吞吐量为P,消费者可以达到的吞吐量为C,预期Kafka吞吐量为T,那么建议该Topic的Partition数目设置为Max(T/P , T/C)。 在Kafka集群中,分区越多吞吐量越高,但是分区过多也存在潜在影响,例如文件句柄增加、不可用性增加(如:某个节点故障后,部分Partition重选Leader后时间窗口会比较大)及端到端时延增加等。 建议:单个Partition的磁盘占用最大不超过100GB;单节点上Partition数目不超过3000;整个集群的分区总数不超过10000。
  • 操作步骤 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面。 搜索配置项“dfs.namenode.fs-limits.max-directory-items”。 表1 参数说明 参数名称 描述 默认值 dfs.namenode.fs-limits.max-directory-items 定义目录中包含的最大条目数。 取值范围:1~6400000 1048576 设置单个HDFS目录下最大可容纳的文件数目。保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。 用户尽量将数据做好存储规划,可以按时间、业务类型等分类,不要单个目录下直属的文件过多,建议使用默认值,单个目录下约100万条。
  • 配置描述 请参考修改集群服务配置参数,进入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
  • 问题 在普通集群中手动创建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。
  • 场景介绍 为了快速对数据创建索引,HBase提供了可通过MapReduce功能创建索引的TableIndexer工具,该工具可实现添加、构建和删除索引。具体使用场景如下: 在表中预先存在大量数据的情况下,可能希望在某个列上添加索引。但是,使用addIndicesWithData() API添加索引会生成与相关数据对应的索引数据,这将花费大量时间。另一方面,使用addIndices()创建的索引不会构建与表数据对应的索引数据。因此,可以使用TableIndexer工具来完成索引的构建。 如果索引数据与表数据不一致,该工具可用于重新构建索引数据。 如果暂时禁用索引并且在此期间,向禁用的索引列执行新的put操作,直接将索引从禁用状态启用可能会导致索引数据与用户数据不一致。因此,必须注意在再次使用之前重新构建所有索引数据。 对于大量现有的索引数据,可以使用TableIndexer工具将索引数据从表中完全删除。 对于未建立索引的表,该工具允许用户同时添加和构建索引。
  • 日志级别 Hive提供了如表2所示的日志级别。 运行日志的级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 参考修改集群服务配置参数,进入Hive服务“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别并保存。 配置Hive日志级别后可立即生效,无需重启服务。
  • Grouping 语法简介: 当Group by语句带with rollup/cube选项时,Grouping才有意义。 CUBE生成的结果集显示了所选列中值的所有组合的聚合。 ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合。 Grouping:当用CUBE或ROLLUP运算符添加行时,附加的列输出值为1;当所添加的行不是由CUBE或ROLLUP产生时,附加列值为0。 例如,Hive中有一张表“table_test”,表结构如下所示: +----------------+-------------------+--+| table_test.id | table_test.value |+----------------+-------------------+--+| 1 | 10 || 1 | 15 || 2 | 20 || 2 | 5 || 2 | 13 |+----------------+-------------------+--+ 执行如下语句: select id,grouping(id),sum(value) from table_test group by id with rollup; 得到如下结果: +-------+-----------------+------+--+| id | groupingresult | sum |+-------+-----------------+------+--+| 1 | 0 | 25 || NULL | 1 | 63 || 2 | 0 | 38 |+-------+-----------------+------+--+
  • EXCEPT、INTERSECT 语法简介 EXCEPT返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。 INTERSECT返回两个结果集的交集(即两个查询都返回的所有非重复值)。 例如,Hive中有两张表“test_table1”、“test_table2”。 “test_table1”表结构如下所示: +-----------------+--+| test_table1.id |+-----------------+--+| 1 || 2 || 3 || 4 |+-----------------+--+ “test_table2”表结构如下所示: +-----------------+--+| test_table2.id |+-----------------+--+| 2 || 3 || 4 || 5 |+-----------------+--+ 执行如下的EXCEPT语句: select id from test_table1 except select id from test_table2; 显示如下结果: +--------------+--+| _alias_0.id |+--------------+--+| 1 |+--------------+--+ 执行INTERSECT语句: select id from test_table1 intersect select id from test_table2; 显示如下结果: +--------------+--+| _alias_0.id |+--------------+--+| 2 || 3 || 4 |+--------------+--+
  • 操作场景 该任务指导MRS集群管理员在Manager创建并设置Hive的角色。Hive角色可设置Hive管理员权限以及Hive数据表的数据操作权限。 用户使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。 安全模式支持创建Hive角色,普通模式不支持创建Hive角色。 MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • 操作示例 不采用“current_user”函数,要实现不同的用户,访问不同数据,需要创建不同的视图: 将视图v1授权给用户hiveuser1,hiveuser1用户可以访问表table1中“type='hiveuser1'”的数据: create view v1 as select * from table1 where type='hiveuser1'; 将视图v2授权给用户hiveuser2,hiveuser2用户可以访问表table1中“type='hiveuser2'”的数据: create view v2 as select * from table1 where type='hiveuser2'; 采用“current_user”函数,则只需要创建一个视图: 将视图v分别赋给用户hiveuser1、hiveuser2,当hiveuser1查询视图v时,“current_user()”被自动转化为hiveuser1,当hiveuser2查询视图v时,“current_user()”被自动转化为hiveuser2: create view v as select * from table1 where type=current_user();
  • 资源和成本规划 该解决方案主要部署如下资源,以下费用仅供参考,具体请参考华为云官网价格详情,实际收费以账单为准。 表1 成本预估(仅供参考) 华为云服务 计费说明 每月花费(调用100万次) 函数工作流 FunctionGraph 区域:华北-北京四 产品:函数 请求次数: 0-100万次: 0元/100万次 100万次以上 : 1.33元/100万次 计量时间: 0-400,000 GB/秒: 0元/GB-秒 400,000 GB/秒以上 :0.00011108元/GB-秒 具体费用参考表左侧计费说明 对象存储服务 OBS 区域:华北-北京四 存储空间:数据存储(多AZ存储) 默认存储类别:标准存储 桶策略:私有 请求费用:0.0100元/万次 存储空间:0.0990元/GB/月 流量费用: 公网流出流量 / 00:00-08:00(闲时)0.2500元/GB 公网流出流量 / 08:00-24:00(忙时)0.5000元/GB 费用包括存储空间、请求费用、流量费用两部分,具体请参考OBS计费详情。 费用包括存储空间、请求费用、流量费用三部分,详细请参考每月账单。 事件网格 EG 区域:华北-北京四 华为云服务事件源自身产生发布的事件(任意事件状态变化 )免费,事件消费免费。 免费 合计 - 函数工作流费用+OBS费用
  • 方案架构 该解决方案基于华为云函数工作流 FunctionGraph、对象存储服务 OBS资源一键式部署,帮用户快速实现视频转GIF动图。解决方案架构图如下: 图1 方案架构图 部署该方案中需要使用的资源: 创建两个对象存储服务 OBS桶,一个用于上传视频触发函数工作流, 一个用于存储视频转GIF动图文件。 函数工作流 FunctionGraph,用于调用 媒体处理 MPC云服务的相关接口,实现视频转GIF动图功能,并将视频对应的GIF上传至指定的目标OBS桶。 使用媒体处理 MPC云服务,由函数工作流调用其新建转动图相关接口创建任务,实现对原视频转换GIF。 通过 统一身份认证 服务 IAM 的委托功能,将账号Region内对象存储服务 OBS的操作权限委托给函数工作流服务 FunctionGraph。 创建一个EventGrid触发器,该触发器关联事件网格 EG,默认创建一个事件订阅,事件源为OBS应用事件源,用于自动触发函数执行相关业务逻辑。
共100000条