云服务器内容精选

  • 原因分析 Hive启用Ranger鉴权后,默认的Hive策略中有2个关于database的public组策略, 所有用户都属于public组,默认给public组配有default数据库的创表和所有其他数据库的create权限,因此默认所有的用户都有show databases和show tables的权限,如果不想让某些用户有show databases和show tables权限,可在Ranger WEBUI中删除该默认public组策略,并赋予需要查看的用户权限。
  • 处理步骤 登录Ranger WebUI界面。 在“Service Manager”区域内,单击Hive组件名称,进入Hive组件安全访问策略列表页面。 分别单击“all - database”和“default database tables columns”策略所在行的按钮。 删除“public”组策略。 图1 all - database策略 图2 default database tables columns策略 在Hive组件安全访问策略列表页面,单击“Add New Policy”为相关用户或者用户组添加资源访问策略,具体请参考配置组件权限策略。
  • 解决方法 应用无法访问到SparkUI的IP:PORT。可能有以下原因: 可能原因一:集群节点与客户端节点网络不通。 解决方法: 查看客户端节点“/etc/hosts”文件中是否配置集群节点映射,在客户端节点执行命令: ping sparkui的IP 如果ping不通,检查映射配置与网络设置。 可能原因二:客户端节点防火墙未关闭。 解决方法: 执行如下命令可查看是否关闭: systemctl status firewalld(不同的操作系统查询命令不一致,此命令以CentOS为例) 如下图所示:dead表示关闭。 防火墙开则影响通信,执行如下命令关闭防火墙: service firewalld stop(不同的操作系统查询命令不一致,此命令以CentOS为例) 可能原因三:端口被占用,每一个Spark任务都会占用一个SparkUI端口,默认为22600,如果被占用则依次递增端口重试。但是有个默认重试次数,为16次。16次重试都失败后,会放弃该任务的运行。 查看端口是否被占用: ssh -v -p port username@ip 如果输出“Connection established”,则表示连接成功,端口已被占用。 Spark UI端口范围由配置文件spark-defaults.conf中的参数“spark.random.port.min”和“spark.random.port.max”决定,如果该范围端口都已被占用,则 导致无端口可用从而连接失败。 解决方法:调节重连次数spark.port.maxRetries=50,并且调节executor随机端口范围spark.random.port.max+100 可能原因四:客户端Spark配置参数错误。 解决方法: 在客户端节点执行命令cat spark-env.sh,查看SPARK_LOCAL_HOSTNAME,是否为本机IP。 该问题容易出现在从其他节点直接复制客户端时,配置参数未修改。 需修改SPARK_LOCAL_HOSTNAME为本机IP。 注:如果集群使用EIP通信,则需要设置以下参数。 spark-default.conf中添加spark.driver.host = EIP(客户端节点弹性公网IP) spark-default.conf中添加spark.driver.bindAddress=本地IP spark-env.sh中修改SPARK_LOCAL_HOSTNAME=EIP(客户端节点弹性公网IP) 可能原因五:代码问题。 解决方法: Spark在启动任务时会在客户端创建sparkDriverEnv并绑定DRIVER_BIND_ADDRESS,该逻辑并没有走到服务端,所以该问题产生的原因也是客户端节点操作系统环境问题导致sparkDriver获取不到对应的主机IP。 可以尝试执行export SPARK_LOCAL_HOSTNAME=172.0.0.1或者设置spark.driver.bindAddress=127.0.0.1,使提交任务driver端可以加载到loopbackAddress,从而规避问题。
  • 问题 安装集群外客户端或使用集群外客户端时,有时会出现连接Spark任务端口失败的问题。 异常信息:Failed to bind SparkUi Cannot assign requested address: Service ‘sparkDriver’ failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service ‘sparkDriver’ (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.
  • 配置参数 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 参数 说明 默认值 spark.sql.mergeSmallFiles.enabled 设置为true,Spark写入目标表时会判断是否写入了小文件,如果发现有小文件,则会启动合并小文件的job。 false spark.sql.mergeSmallFiles.threshold.avgSize 如果某个分区的平均文件大小小于该值,则启动小文件合并。 16MB spark.sql.mergeSmallFiles.maxSizePerTask 合并后的每个文件大小目标大小。 256MB spark.sql.mergeSmallFiles.moveParallelism 当不需要合并小文件后时,将临时文件移动到最终目录的并行度。 10000
  • 场景介绍 HBase本身提供了ImportTsv&LoadIncremental工具来批量加载用户数据。当前提供了HIndexImportTsv来支持加载用户数据的同时可以完成对索引数据的批量加载。HIndexImportTsv继承了HBase批量加载数据工具ImportTsv的所有功能。此外,如果在执行HIndexImportTsv工具之前未建表,直接运行该工具,将会在创建表时创建索引,并在生成用户数据的同时生成索引数据。
  • 操作场景 FlinkServer支持对接8.1.x及之后版本的 GaussDB (DWS)数据库,本章节介绍GaussDB(DWS)作为Source表、Sink表以及维表的DDL定义,以及创建表时使用的WITH参数和代码示例,并指导如何在FlinkServer作业管理页面操作。FlinkSQL与GaussDB(DWS)数据类型对应关系如下表所示。 本示例以安全模式FlinkServer、Kafka为例,对接安全模式GaussDB(DWS)。 根据安全需求,FlinkServer界面回显FlinkSQL时,SQL中的“password”字段将显示为空,在回显状态下需要将密码信息补齐后再提交作业。 本章节仅适用于 MRS 3.2.0至MRS 3.3.1版本及集群,MRS 3.3.1及之后的版本请参考创建FlinkServer作业写入数据至 数据仓库 服务(DWS)。
  • 前提条件 需确保FlinkServer所在集群和GaussDB(DWS)所在集群网络互通,确保“可用区”、“虚拟私有云”、“安全组”配置相同。 FlinkServer所在集群(安全模式): 集群中已安装HDFS、Yarn、Kafka、ZooKeeper和Flink服务。 包含Kafka服务的客户端已安装,安装路径如:/opt/client。 参考创建FlinkServer权限角色创建一个具有FlinkServer管理员权限的用户用于访问Flink WebUI,如:flinkuser。 待对接的GaussDB(DWS)所在集群(安全模式): 可参考如下命令连接数据库并创建接受数据的表: gsql -d postgres -h IP -U username –p port -W password –r postgres:需要连接的数据库名称。 IP:GaussDB(DWS) 集群地址。如果通过公网地址连接,请指定为集群“公网访问 域名 ”,如果通过内网地址连接,请指定为集群“内网访问域名”。如果通过弹性负载均衡连接,请指定为“弹性负载均衡地址”。 username和password:连接数据库的用户名及密码。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。 port :Coordinator的端口号,请根据实际情况替换,可使用gs_om -t status --detail查询Coordinator数据路径,在该路径下的“postgresql.conf”文件中查看端口号信息。 创建用于接受数据的空表,如表“customer_t1”: CREATE TABLE customer_t1 ( c_customer_sk INTEGER, c_customer_name VARCHAR(32) ) with (orientation = column,compression=middle) distribute by hash (c_customer_name);
  • 工具介绍 在Hadoop大规模生产集群中,由于HDFS的元数据都保存在NameNode的内存中,集群规模受制于NameNode单点的内存限制。如果HDFS中有大量的小文件,会消耗NameNode大量内存,还会大幅降低读写性能,延长作业运行时间。因此,小文件问题是制约Hadoop集群规模扩展的关键问题。 本工具主要有如下两个功能: 扫描表中有多少低于用户设定阈值的小文件,返回该表目录中所有数据文件的平均大小。 对表文件提供合并功能,用户可设置合并后的平均文件大小。
  • 返回结果 参数 描述 action instant_time对应的commit所属的action类型,如compaction、deltacommit、clean等 partition_path 指定的instant所更新或插入的文件位于哪个分区 file_id 指定的instant所更新或插入的文件的ID previous_commit 指定的instant所更新或插入文件名中的时间戳 total_records_updated 该文件中多少个record被更新 total_records_written 该文件中新插入了多少个record total_bytes_written 该文件新增多少bytes的数据 total_errors 指定的instant在更新或者插入过程中的报错 file_size 该文件的大小(bytes)
  • 回答 MRS集群外部的节点,推荐配置镜像源后,直接使用pip安装impala-shell客户端。 执行如下命令确认python版本是2还是3: pip --version 如果节点操作系统为Euler/HCE/Centos,执行如下命令安装impala-shell客户端: python2执行如下命令: yum install -y gcc gcc-c++ python-devel cyrus-sasl-devel krb5-devel pip install impala-shell python3执行如下命令: yum install -y gcc gcc-c++ python3-devel cyrus-sasl-devel krb5-devel pip install impala-shell 如果节点操作系统为Ubuntu,执行如下命令安装impala-shell客户端: python2执行如下命令: apt-get update apt install -y gcc g++ python2-dev cyrus-dev libkrb5-dev pip install impala-shell python3执行如下命令: apt-get update apt install -y gcc g++ python3-dev cyrus-dev libkrb5-dev pip install impala-shell 如果节点操作系统为SUSE,执行如下命令安装impala-shell客户端: 仅SUSE 13.2及之后版本支持安装impala-shell,低版本中没有cyrus-sasl-devel包和krb5-devel暂不支持。 python2执行如下命令: zypper install -y gcc gcc-c++ python-devel cyrus-sasl-devel krb5-devel 由于安装krb5-devel后,krb5-config不在PATH目录下,需要创建软链接: ln -s /usr/lib/mit/bin/krb5-config /usr/bin/krb5-config pip install impala-shell python3执行如下命令: zypper install -y gcc gcc-c++ python3-devel cyrus-sasl-devel krb5-devel 由于安装krb5-devel后,krb5-config不在PATH目录下,需要创建软链接: ln -s /usr/lib/mit/bin/krb5-config /usr/bin/krb5-config pip install impala-shell
  • 补丁基本信息说明 表1 补丁基本信息 补丁号 MRS_3.3.0-LTS.1.1 发布时间 2024-12-20 解决的问题 解决Manager问题: 修改Chrony的域名会导致Nodeagent无法启动。 集群扩容时,在同步组件配置时HDFS组件配置同步失败,导致启动HDFS服务失败。 Chrony时钟偏移精度低导致上报持续上报“NTP服务异常”与“NTP服务不可用”告警。 优化节点间互信失效告警,自动恢复功能。 重启Agent进程,如果这个Agent节点安装有服务健康检查配置的关键实例,将会误报服务不可用告警。 运维通道功能校验签名失败后任务阻塞。 节点内存打满,MRS集群磁盘出现踢盘,盘分区丢失。 租户资源修改用户策略功能无法使用。 空间聚合指标聚合时使用了实时数据聚合,导致聚合的数据不准确。 节点隔离后频繁告警节点故障告警。 Manager存在节点间网络异常误告警及告警无法自动消除情况。 Gaussdb健康检查异常,导致实例重启。 IAM 同步的用户加入supergroup用户组后,无法删除。 高并发认证过程web进程内存增加较多。 Ldap在部分数据主备不一致未能及时触发告警。 Meta缺少进程可用性健康检查。 Manager主备节点同步数据异常,pms目录下存在脏数据。 解决Flink问题: 普通集群Flink jar作业提交失败。 创建只有两个英文字母的用户后,无法登录Flink WebUI页面。 FlinkServer重启策略的失败重试间隔时间单位与实际不符。 修改Flink登录用户的密码后,提交作业失败。 作业从Checkpoint恢复后一直处于提交中。 Flinkserver作业提交后一直显示提交成功。 Flink作业写Hudi后,Spark查询报错。 Flink日志中打印Hudi数据。 两个以上join的场景中hash行为发生改变。 Hudi cow表lookup join作业启动时报错。 普通集群Flink写Hudi同步hive hms模式下失败。 Flink作业通过CheckPoint恢复失败。 解决JobGateWay问题: Jobgateway的flink作业launcherJob日志无详细信息。 不起realJob的FlinkSql类型作业偶现状态刷新失败。 历史作业信息的老化未根据任务结束时间进行老化。 用户添加成功后首次作业管理提交作业时显示MRS Manager中用户不存在。 全链路在DLF上的Spark/DWS作业For Each算子监控数据展示缺失。 MRS实时任务告警通知需显示具体作业名称。 Flink Jar作业实际失败了后作业状态却刷新为成功。 提交FlinkSQL作业,在Yarn上未启动真实作业。 DGC提交FlinkSSQL作业包含多个insert,每个insert会分别提交1个Flink作业。 LauncherJob重试后导致任务状态异常。 Sparkscript作业偶现作业状态与Yarn上作业状态不一致。 管理面提交MR引擎作业当任务有多个map时管理面任务结束统计时间不正确。 SQL中查询表格大于10张时,查询结果排序与实际的排序不符。 JobGateway提交的SparkSql/SparkScript同名列作业展示的结果不正确。 JobBalance连接数监控为空。 管控面提交Spark作业Jar包所在的桶与业务桶使用同一个时,长时间运行后访问obs 403。 解决ClickHouse问题: ClickHouse偶现libunwind内存越界,导致进程重启。 ClickHouse的迁移工具内部有数据迁移时长限制,数据量较大时迁移失败。 Nodeagent进程连接ZooKeeper,异常链接不释放。 数据库进入只读导致任务失败。 内存连续增长,导致进程无内存可用。 健康检查阻塞导致资源打满。 单节点下电重启后,ClickHouse实例故障。 表数量多的情况下,角色界面加载慢。 副本不一致告警频繁上报,影响用户体验。 使用scp方式替换sftp功能。 慢查询告警检测语句执行耗时过长。 Mysql引擎偶现卡住。 安全认证存在缓慢内存泄露。 数据盘误隔离,导致数据异常。 资源关闭异常导致僵尸进程。 system.build_options包含用户提交信息。 集群实例间的CPU负载不均衡。 解决Flume问题: 使用TaildirSource读取文件在节点inode重复场景下会造成少读文件或者读取文件不全。 Flume使用httpsource时,由于jetty-http-9.4.46.v20220331.jar包冲突导致报错。 解决Kafka问题: 故障场景下,KafkaUI没有释放ZooKeeper链接。 解决Ranger问题: Spark执行任务时,报错Ranger策略为空,导致批量Spark任务失败。 各组件日志默认保留数量和大小太少,无法支撑问题定位。 SparkSQL任务进行Ranger鉴权,偶发鉴权失败。 解决HBase问题: HBase在大量写入的场景下,回收站会被打满不能及清理导致磁盘空间不被释放。 [HBASE-27580] 健康检查进程因为热点自愈OOM,集群RegionServer节点反复重启。 各组件日志默认保留数量和大小太少,无法支撑问题定位。 compaction队列积压问题严重。 RegionServer不断重启,数据写入失败,任务失败。 HBase冷热表执行major compaction异常。 使用FSHLogProvider时,开启HAR特性在WAL滚动时将可能抛出FileNotFoundException。 HBase连接Zookeeper大量进程未释放,导致节点内存爆满。 HBase计划性迁移后存量复制导致全量数据重复迁移。 Cache key had block type null日志打印过多,可能影响性能。 ALM-19012告警HBase系统表目录或文件丢失告警误报。 健康检查脚本执行异常导致上报HBase服务不可用误告警。 解决Yarn问题: RM长时间运行后发现大量ContainerIdPBImpl对象占用导致内存泄漏。 提交HiveSQL任务长时间卡主无法往下运行。 Yarn资源抢占功能偶现不生效。 “/tmp/hadoop-yarn/staging/”目录下文件未清理。 Yarn队列资源充足,任务提交无法取到资源。 kill有预留资源的任务后,Yarn上预留资源累加不释放。 任务长时间运行后日志丢失。 解决HDFS问题: 双AZ集群NameNode主备倒换后出现大量待复制副本。 访问kerberos超时导致,上报异常告警。 容灾时候报错 CopyListing$DuplicateFileException。 HDFS主备容灾偶现失败。 HBase空指针异常导致regionserver abort问题。 解决MapReduce问题: 循环依赖校验有误。 解决Hive问题: 开启Ranger鉴权后查询大宽表耗时较长。 Ranger不支持禁用OBS鉴权策略。 influxdb生成的parquet文件timestamp类型为纳秒类型,Hive读取报错。 外置RDS MYSQL场景开启添加列优化执行alter cascade操作分区表由于库中分区量较大导致MYSQL异常。 日志默认保留数量和大小调整。 Tez引擎执行union后使用concatenate合并小文件数据丢失。 重启Zookeeper节点后Hive SQL执行失败。 普通集群,Hive需验证token,导致Flink管理面提交hive catlog作业失败。 MetaStore删除分区偶现死锁。 Tez引擎insert overwrite插入空集不会覆盖原数据。 conv函数第一个参数为空时执行结果异常。 Hive on Spark作业并发较高时会将所在节点内存打爆。 启用Ranger鉴权,本用户创建的UDAF,本用户使用,报无权限。 localtask导致inode满优化。 MetaStore死锁无法自动恢复。 Minus执行报空指针。 表location指定库路径导致删表后库数据丢失。 解决Hudi问题: 实时日切入湖场景(Flink on Hudi)数据入湖后,存在Hudi相同分区下同主键数据重复问题,导致数据不一致。 Alter删除分区在写同名分区数据,执行clean无效。 Hudi以数字开头的hudi表名,表创建成功,在进行删除分区时失败。 FileGroup下只有一个4bytes文件时,Hudi读写报错。 Hudi表删表之后重建会报错。 执行DDL后,Drop partition失败。 Insert Overwrite写MOR表,archive失效。 修改Hudi写Cow表逻辑,先写到temp目录,然后再rename到正式目录。 Hudi表执行drop partition后重新写入相同分区的数据,分区无法添加到metastore,导致Hive/HetuEngine读不到新数据。 Spark DataSource第一次写入数据时报NPE。 spark-shell建表失败。 解决HetuEngine问题: date_add开启隐式转换使用between执行失败。 queryInfo日志里面Memory采集不准确。 Hive大写CURRENT_USER函数创建的视图,hetu-cli查询不生效。 date_add('month', -1 vs - interval '1' month)计算不准确。 datediff时间函数计算结果不对。 普通模式集群HetuEngine需要支持对接外部LDAP。 Hive新增metastore实例之后,HetuEngine本地容器未刷新。 HetuEngine的SQL运维界面,基于用户维度的慢sql统计信息不正确。 SQL很长的时候,使用HSFabric连接JDBC执行SQL失败。 DBService服务异常重启恢复期间,如果HetuEngine的计算实例异常停止,在DBService恢复后,计算实例无法自愈。 QAS磁盘使用率无监控数据。 Hive嵌套视图包含cast varchar(n)时,查询视图报错。 解决Spark问题: JD BCS erver在session关闭超时的时候会出现session一直存在的情况。 spark.history.store.hybridStore.diskBackend默认值改为ROCKSDB。 用户Spark任务Driver执行完成后,Executor启动时出现RpcEndpointNotFoundException: Cannot find endpoint。 JDB CS erver driver进程出现log4j死锁。 commons-pool2版本冲突导致Spark访问kafka报错。 Sparkstreaming任务失败,但是Yarn WebUI中显示状态是succeeded。 Spark任务提交报Spark类序列化异常。 spark show tables不支持Ranger鉴权。 JobHistory GC回收慢导致长时间运行的任务场景下频繁出现实例GC告警。 Spark作业Driver经常Full GC报OOM异常。 Spark Jar读取Parquet和MySQL数据后进行Join和Filter操作后,必现栈溢出。 influxdb生成的parquet文件timestamp类型为纳秒,故导致数据读取报错。 CDM 执行Spark SQL使用的JDBC接口,SQL执行失败,但是返回给客户端结果是执行成功。 LYUAN.LYUAN_L2_LOT_PLAN_DETAIL_CA表增加字段后,使用insert into table xxx select xxx from xxx语句插入数据后,分区值插入到了其他字段。 无法获取包含genericUDF执行计划的json格式。 Insert overwrite table a select * from a, metastore故障后,数据丢失。 创建block异常失败场景未清理blockinfo状态导致dag-scheduler-event-loop线程挂死。 鉴权加固:spark.ranger.plugin.viewaccesscontrol.enable默认开启。 alter table drop partition权限管理_user有库的read,write权限时,删除库内表分区时,报错提示需要EXECUTE权限,但是表分区却删除成功。 alter table add partions set location指定为一个已有库的路径时,执行成功,有数据丢失风险。 Spark创建库时指定location路径和已有库路径一致时没有拦截,校验默认关闭。 spark未把.db路径加入黑名单保护列表会存在建表建分等指定location存在数据丢失风险。 spark.sql.relationCache.skip参数行为与描述不符合,为空时候不生效。 DGC对应连接Spark JDBCServer提及的Yarn任务 AM重试次数只有一次,单点故障会影响整个集群。 Driver存储大量JobConf对象,内存不断增加引发的内存泄露。 CSV中存在null时,covertRow会频繁读取SqlConf。 访问集群外HDFS,Spark认证失败。 UserA创建表和视图后,只授权给UserB视图Select权限,UserB可以查询到表数据。 用户任务Orc数据文件迁移到新集群后,出现读取Orc数据时出现数组越界异常。 管控面执行add jar obs路径空指针。 补丁兼容关系 MRS_3.3.0-LTS.1.1补丁包中包含所有MRS 3.3.0-LTS.1版本单点问题修复补丁。 父主题: MRS 3.3.0-LTS.1.1补丁说明
  • YARN常用端口 表中涉及端口的协议类型均为:TCP。 配置参数 开源默认端口 定制默认端口 端口说明 yarn.resourcemanager.webapp.port 8088 26000 ResourceManager服务的Web http 端口。 yarn.resourcemanager.webapp.https.port 8090 26001 ResourceManager服务的Web https 端口。 该端口用于:安全模式下,接入Resource Manager Web应用。 说明: 端口的取值范围为一个建议值,由产品自己指定。在代码中未做端口范围限制。 安装时是否缺省启用:是 安全加固后是否启用:是 yarn.nodemanager.webapp.port 8042 26006 NodeManager Web http端口 yarn.nodemanager.webapp.https.port 8044 26010 NodeManager Web https端口。 该端口用于: 安全模式下,接入NodeManager web应用。 说明: 端口的取值范围为一个建议值,由产品自己指定。在代码中未做端口范围限制。 安装时是否缺省启用:是 安全加固后是否启用:是
  • ClickHouse常用端口 表中涉及端口的协议类型均为:TCP和HTTP。 配置参数 开源默认端口 定制默认端口 端口说明 interserver_http_port 9009 9009 用于在ClickHouse server间通信的http端口。 interserver_https_port 9010 9010 用于在ClickHouse server间通信的https端口。 http_port 8123 8123 用于通过http连接到ClickHouse server的端口。 https_port 8443 8443 用于通过https连接到ClickHouse server的端口。 tcp_port 9000 9000 用于客户端通过TCP连接到ClickHouse server的端口。 tcp_port_secure 9440 9440 用于客户端通过TCP SSL连接到ClickHouse server的端口。 lb_tcp_port 21424 21424 ClickHouseBalancer的TCP通信端口号。 lb_http_port 21425 21425 ClickHouseBalancer的Http通信端口号。 lb_https_port 21426 21426 ClickHouseBalancer的Https通信端口号。 lb_tcp_secure_port 21428 21428 ClickHouseBalancer的TCP SSL通信端口号。
  • Doris常用端口 表中涉及端口的协议类型均为:TCP和HTTP。 配置参数 开源默认端口 定制默认端口 端口说明 http_port 8030 29980 FE服务的HTTP端口。 https_port 8050 29991 FE服务的HTTPS端口。 query_port 9030 29982 Doris FE通过MySQL协议查询连接端口。 rpc_port 9020 29981 FE服务的Thrift Server端口。 be_port 9060 29984 BE上Thrift Server的端口号,用于接收来自FE的请求。 brpc_port 8060 29987 BE上的BRPC的端口,用于各BE实例之间进行通讯连接。 heartbeat_service_port 9050 29985 BE上心跳服务端口(Thrift),用于接收来自FE的心跳。 webserver_port 8040 29986 BE上的HTTP Server的服务端口。 broker_ipc_port 8000 29990 Broker上的Thrift Server通信端口,用于接收请求。 single_replica_load_brpc_port 9070 29988 单副本数据导入功能中,Master副本和Slave副本之间通信的RPC端口。 single_replica_load_download_port 8050 29989 单副本数据导入功能中,Slave副本通过HTTP从Master副本下载数据文件的端口。