华为云用户手册

  • LdapServer高危操作 表15 LdapServer高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改LdapServer的参数LDAP_SERVER_PORT 修改该参数后,若没有及时重启LdapServer服务和其关联的所有服务,会导致集群内部LdapClient的配置参数异常,影响业务运行 ★★★★★ 修改该参数后,请重启LdapServer服务和其关联的所有服务 无 恢复LdapServer数据 该操作会重启Manager和整个集群,影响集群的管理维护和业务 ★★★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 更换LdapServer所在节点 该操作会导致部署在该节点上的服务中断,且当该节点为管理节点时,更换节点会导致重启 OMS 各进程,影响集群的管理维护 ★★★ 更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改LdapServer密码 修改密码需要重启LdapServer和Kerberos服务,影响集群的管理维护和业务 ★★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 无 节点重启导致LdapServer数据损坏 如果未停止LdapServer服务,直接重启LdapServer所在节点,可能导致LdapServer数据损坏 ★★★★★ 使用LdapServer备份数据进行恢复 无
  • Spark2x高危操作 MRS 3.x之前版本,服务名称为Spark。 表17 Spark2x高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 配置项的修改(spark.yarn.queue) 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 配置项的修改(spark.driver.extraJavaOptions) 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 配置项的修改(spark.yarn.cluster.driver.extraJavaOptions) 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 配置项的修改(spark.eventLog.dir) 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 配置项的修改(SPARK_DAEMON_JAVA_OPTS) 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 删除所有JobHistory2x实例 导致历史应用的event log丢失 ★★ 至少保留一个JobHistory2x实例 观察JobHistory2x中是否可以查看历史应用信息 删除或修改HDFS上的/user/spark2x/jars/8.1.0.1/spark-archive-2x.zip 导致JD BCS erver2x启动异常及业务功能异常 ★★★ 删除/user/spark2x/jars/8.1.0.1/spark-archive-2x.zip,等待10-15分钟,zip包自动恢复 观察服务能否正常启动
  • KrbServer高危操作 表14 KrbServer高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改KrbServer的参数KADMIN_PORT 修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行 ★★★★★ 修改该参数后,请重启KrbServer服务和其关联的所有服务 无 修改KrbServer的参数kdc_ports 修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行 ★★★★★ 修改该参数后,请重启KrbServer服务和其关联的所有服务 无 修改KrbServer的参数KPASSWD_PORT 修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行 ★★★★★ 修改该参数后,请重启KrbServer服务和其关联的所有服务 无 修改Manager系统 域名 若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行 ★★★★★ 修改该参数后,请重启KrbServer服务和其关联的所有服务 无 配置跨集群互信 该操作会重启KrbServer服务和其关联的所有服务,影响集群的管理维护和业务 ★★★★★ 更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常
  • IoTDB高危操作 表12 IoTDB高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 删除数据目录 该操作将会导致业务信息丢失 ★★★ 请勿手动删除数据目录 观察数据目录是否正常 修改数据目录下内容(创建文件、文件夹) 该操作将会导致该节点上的IoTDB的实例故障 ★★★ 请勿手动在数据目录下创建或修改文件及文件夹 观察数据目录是否正常 单独启停基础组件 该操作将会影响服务的一些基础功能导致业务失败 ★★★ 请勿单独启停Kerberos/LDAP等基础组件,启停基础组件请勾选关联服务 观察服务状态是否正常 重启/停止服务 该操作将会导致业务中断 ★★ 确保在必要时重启/停止服务 观察服务是否运行正常
  • Kafka高危操作 表13 Kafka高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 删除Topic 该操作将会删除已有的主题和数据 ★★★ 采用Kerberos认证,保证合法用户具有操作权限,并确保主题名称正确 观察主题是否正常处理 删除数据目录 该操作将会导致业务信息丢失 ★★★ 请勿手动删除数据目录 观察数据目录是否正常 修改数据目录下内容(创建文件、文件夹) 该操作将会导致该节点上的Broker实例故障 ★★★ 请勿手动在数据目录下创建或修改文件及文件夹 观察数据目录是否正常 修改磁盘自适应功能“disk.adapter.enable”参数 该操作会在磁盘使用空间达到阈值时调整Topic数据保存周期,超出保存周期的历史数据可能被清除 ★★★ 若个别Topic不能做保存周期调整,将该Topic配置在“disk.adapter.topic.blacklist”参数中 在KafkaTopic监控页面观察数据的存储周期 修改数据目录“log.dirs”配置 该配置不正确将会导致进程故障 ★★★ 确保所修改或者添加的数据目录为空目录,且权限正确 观察数据目录是否正常 减容Kafka集群 该操作将会导致部分Topic数据副本数量减少,可能会导致Topic无法访问 ★★ 请先做好数据副本转移工作,然后再进行减容操作 观察分区所在备份节点是否都存活,确保数据安全 单独启停基础组件 该操作将会影响服务的一些基础功能导致业务失败 ★★★ 请勿单独启停ZooKeeper/Kerberos/LDAP等基础组件,启停基础组件请勾选关联服务 观察服务状态是否正常 重启/停止服务 该操作将会导致业务中断 ★★ 确保在必要时重启/停止服务 观察服务是否运行正常 修改配置参数 该操作将需要重启服务使得配置生效 ★★ 确保在必要时修改配置 观察服务是否运行正常 删除/修改元数据 修改或者删除ZooKeeper上Kafka的元数据可能导致Topic或者Kafka服务不可用 ★★★ 请勿删除或者修改Kafka在ZooKeeper上保存的元数据信息 观察Topic或者Kafka服务是否可用 修改元数据备份文件 修改Kafka元数据备份文件,并被使用进行Kafka元数据恢复成功后,可能导致Topic或者Kafka服务不可用 ★★★ 请勿修改Kafka元数据备份文件 观察Topic或者Kafka服务是否可用
  • DBService高危操作 表6 DBService高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改DBService密码 修改密码需要重启服务,服务在重启过程中无法访问。 ★★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作。 观察是否有未恢复的告警产生,观察集群的管理维护是否正常 恢复DBService数据 数据恢复后,会丢失从备份时刻到恢复时刻之间的数据。 数据恢复后,依赖DBService的组件可能配置过期,需要重启配置过期的服务。 ★★★★ 恢复前确认操作的必要性,恢复时确保同一时间无其它管理维护操作。 观察是否有未恢复的告警产生,观察集群的管理维护是否正常 DBService主备倒换 倒换DBServer过程中,DBService无法提供服务。 ★★ 操作前确认该操作的必要性,操作时确保同一时间无其它管理维护操作。 无 修改DBService浮动IP配置 需要重启DBService服务使配置生效,服务在重启无法访问。 如果浮动IP已被使用过,将会导致配置失败,DBService启动失败。 ★★★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效。 观察服务能否正常启动
  • HDFS高危操作 表10 HDFS高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改HDFS的NameNode的数据存储目录dfs.namenode.name.dir、DataNode的数据配置目录dfs.datanode.data.dir 导致服务启动异常 ★★★★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 执行hadoop distcp命令时,使用-delete参数 Distcp拷贝时,源集群没有而目的集群存在的文件,会在目的集群删除 ★★ 在使用Distcp的时候,确保是否保留目的集群多余的文件,谨慎使用-delete参数 Distcp数据拷贝后,查看目的的数据是否按照参数配置保留或删除 修改HDFS实例的启动参数GC_OPTS、HADOOP_HEAPSIZE和GC_PROFILE 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效,且GC_OPTS与HADOOP_HEAPSIZE参数值无冲突 观察服务能否正常启动 修改HDFS的副本数目dfs.replication,将默认值由3改为1 导致: 存储可靠性下降,磁盘故障时,会发生数据丢失 NameNode重启失败,HDFS服务不可用 ★★★★ 修改相关配置项时,请仔细查看参数说明。保证数据存储的副本数不低于2 观察默认的副本值是否不为1,HDFS服务是否可以正常提供服务 修改Hadoop中各模块的RPC通道的加密方式hadoop.rpc.protection 导致服务故障及业务异常 ★★★★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察HDFS及其他依赖HDFS的服务能否正常启动,并提供服务
  • Hive高危操作 表11 Hive高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改Hive实例的启动参数GC_OPTS 修改该参数可能会导致Hive实例无法启动 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 删除MetaStore所有实例 Hive元数据丢失,Hive无法提供服务 ★★★ 除非确定丢弃Hive所有表信息,否则不要执行该操作 观察服务能否正常启动 使用HDFS文件系统接口或者HBase接口删除或修改Hive表对应的文件 该操作会导致Hive业务数据丢失或被篡改 ★★ 除非确定丢弃这些数据,或者确保该修改操作符合业务需求,否则不要执行该操作 观察Hive数据是否完整 使用HDFS文件系统接口或者HBase接口修改Hive表对应的文件或目录访问权限 该操作可能会导致相关业务场景不可用 ★★★ 请勿执行该操作 观察相关业务操作是否正常 使用HDFS文件系统接口删除或修改文件hdfs:///apps/templeton/hive-3.1.0.tar.gz 该操作可能会导致WebHCat无法正常执行业务 ★★ 请勿执行该操作 观察相关业务操作是否正常 导出表数据覆盖写入本地目录,例如将t1表中数据导出,覆盖到“/opt/dir”路径下: insert overwrite local directory '/opt/dir' select * from t1; 该操作会删除目标目录,如果设置错误,会导致软件或者操作系统无法启动 ★★★★★ 确认需要写入的路径下不要包含任何文件;或者不要使用overwrite关键字 观察目标路径是否有文件丢失 将不同的数据库、表或分区文件指定至相同路径,例如默认仓库路径“/user/hive/warehouse”。 执行创建操作后数据可能会紊乱,如果删除其中一个数据库、表或分区,会导致其他对象数据丢失 ★★★★★ 请勿执行该操作 观察目标路径是否有文件丢失
  • ClickHouse高危操作 表5 ClickHouse高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 删除数据目录 该操作将会导致业务信息丢失 ★★★ 请勿手动删除数据目录 观察数据目录是否正常 缩容ClickHouseServer实例 该操作需要关注同分片中的ClickHouseServer实例节点需要同时退服缩容,否则会造成逻辑集群拓扑信息错乱;该操作执行前需检查逻辑集群内各节点的数据库和数据表信息,进行缩容预分析,保证缩容退服过程中数据迁移成功,避免数据丢失 ★★★★★ 进行缩容操作前,提前收集信息进行ClickHouse逻辑集群及实例节点状态判断 观察ClickHouse逻辑集群拓扑信息,各ClickHouseServer中数据库和数据表信息,以及数据量 扩容ClickHouseServer实例 该操作需要关注新扩容节点是否需要创建老节点上同名的数据库或数据表,否则会造成后续数据迁移、数据均衡以及缩容退服失败 ★★★★★ 进行扩容操作前,确认新扩容ClickHouseServer实例作用和目的,是否需要同步创建相关数据库和数据表 观察ClickHouse逻辑集群拓扑信息,各ClickHouseServer中数据库和数据表信息,以及数据量 退服ClickHouseServer实例 该操作需要关注同分片中的ClickHouseServer实例节点需要同时退服,否则会造成逻辑集群拓扑信息错乱;该操作执行前需检查逻辑集群内各节点的数据库和数据表信息,进行预分析,保证退服过程中数据迁移成功,避免数据丢失 ★★★★★ 进行退服操作前,提前收集信息进行Clickhouse逻辑集群及实例节点状态判断 观察ClickHouse逻辑集群拓扑信息,各ClickHouseServer中数据库和数据表信息,以及数据量 入服ClickHouseServer实例 该操作需要关注入服时必须选择原有分片中的所有节点入服,否则会造成逻辑集群拓扑信息错乱 ★★★★★ 进行入服操作前,对于待入服节点的分片归属信息需要确认 观察ClickHouse逻辑集群拓扑信息 修改数据目录下内容(创建文件、文件夹) 该操作将会导致该节点上的ClickHouse的实例故障 ★★★ 请勿手动在数据目录下创建或修改文件及文件夹 观察数据目录是否正常 单独启停基础组件 该操作将会影响服务的一些基础功能导致业务失败 ★★★ 请勿单独启停ZooKeeper/Kerberos/LDAP等基础组件,启停基础组件请勾选关联服务 观察服务状态是否正常 重启/停止服务 该操作将会导致业务中断 ★★ 确保在必要时重启/停止服务 观察服务是否运行正常
  • Flume高危操作 表8 Flume高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改Flume实例的启动参数GC_OPTS 导致服务启动异常 ★★ 修改相关配置项时请严格按照提示描述,确保修改后的值有效 观察服务能否正常启动 修改HDFS的副本数目dfs.replication,将默认值由3改为1 导致: 存储可靠性下降,磁盘故障时,会发生数据丢失 NameNode重启失败,HDFS服务不可用 ★★★★ 修改相关配置项时,请仔细查看参数说明。保证数据存储的副本数不低于2 观察默认的副本值是否不为1,HDFS服务是否可以正常提供服务
  • CDL高危操作 表4 CDL高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 单独启停基础组件 该操作将会影响服务的一些基础功能导致业务失败 ★★★ 请勿单独启停Kafka/DBService/ZooKeeper/Kerberos/LDAP等基础组件,启停基础组件请勾选关联服务 观察服务状态是否正常 重启/停止服务 该操作将会导致业务中断 ★★ 确保在必要时重启/停止服务 观察服务是否运行正常
  • 集群高危操作 表2 集群高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 随意修改omm用户下的文件目录或者文件权限 该操作会导致MRS集群服务不可用 ★★★★★ 请勿执行该操作 观察MRS集群服务是否可用 绑定弹性公网IP 该操作会将集群的manager所在的master节点暴露在公网,会增大来自互联网的网络攻击风险可能性 ★★★★★ 请确认绑定的弹性公网IP为可信任的公网访问IP 无 开放集群22端口安全组规则 该操作会增大用户利用22进行漏洞攻击的风险 ★★★★★ 针对开放的22端口进行设置安全组规则,只允许可信的IP可以访问该端口,入方向规则不推荐设置允许0.0.0.0可以访问。 无 删除集群或删除集群数据 该操作会导致数据丢失 ★★★★★ 删除前请务必再次确认该操作的必要性,同时要保证数据已完成备份 无 缩容集群 该操作会导致数据丢失 ★★★★★ 缩容前请务必再次确认该操作的必要性,同时要保证数据已完成备份 无 卸载磁盘或格式化数据盘 该操作会导致数据丢失 ★★★★★ 操作前请务必再次确认该操作的必要性,同时要保证数据已完成备份 无
  • Manager高危操作 表3 Manager高危操作 操作名称 操作风险 风险等级 规避措施 重大操作观察项目 修改OMS密码 该操作会重启OMS各进程,影响集群的管理维护 ★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常 导入证书 该操作会重启OMS进程和整个集群,影响集群的管理维护和业务 ★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 升级 该操作会重启Manager和整个集群,影响集群的管理维护和业务 分配集群管理权限的用户,需要严格管控,以防范可能的安全风险 ★★★ 修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 恢复OMS 该操作会重启Manager和整个集群,影响集群的管理维护和业务 ★★★ 修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改IP 该操作会重启Manager和整个集群,影响集群的管理维护和业务 ★★★ 修改时确保同一时间无其它管理维护操作,且修改的IP填写正确无误 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改日志级别 如果修改为DEBUG,会导致Manager运行速度明显降低 ★★ 修改前确认操作的必要性,并及时修改回默认设定 无 更换控制节点 该操作会导致部署在该节点上的服务中断,且当该节点同时为管理节点时,更换节点会导致重启OMS各进程,影响集群的管理维护 ★★★ 更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 更换管理节点 该操作会导致部署在该节点上的服务中断,会导致重启OMS各进程,影响集群的管理维护 ★★★★ 更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 重启下层服务时,如果勾选同时重启上层服务 该操作会导致上层服务业务中断,影响集群的管理维护和业务 ★★★★ 操作前确认操作的必要性,操作时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改OLDAP端口 修改该参数时,会重启LdapServer和Kerberos服务和其关联的所有服务,会影响业务运行 ★★★★★ 操作前确认操作的必要性,操作时确保同一时间无其它管理维护操作 无 用户删除supergroup组 删除supergroup组导致相关用户权限变小,影响业务访问 ★★★★★ 修改前确认需要添加的权限,确保用户绑定的supergroup权限删除前,相关权限已经添加,不会对业务造成影响 无 重启服务 重启过程中会中断服务,如果勾选同时重启上层服务会导致依赖该服务的上层服务中断 ★★★ 操作前确认重启的必要性 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改节点SSH默认端口 修改默认端口(22)将导致创建集群、添加服务/实例、添加主机、重装主机等功能无法正常使用,并且会导致集群健康检查结果中节点互信、omm/ommdba用户密码过期等检查项不准确 ★★★ 执行相关操作前将SSH端口改回默认值 无
  • 禁用操作 表1中描述了在集群操作与维护阶段,观察进行日常操作时应注意的禁用操作。 表1 禁用操作 类别 操作风险 严禁删除ZooKeeper相关数据目录 ClickHouse/HDFS/Yarn/HBase/Hive等很多组件都依赖于ZooKeeper,在ZooKeeper中保存元数据信息。删除ZooKeeper中相关数据目录将会影响相关组件的正常运行。 严禁JDB CS erver主备节点频繁倒换 频繁主备倒换将导致业务中断。 严禁删除Phoenix系统表或系统表数据(SYSTEM.CATA LOG 、SYSTEM.STATS、SYSTEM.SEQUENCE、SYSTEM. FUNCTION) 删除系统表将导致无法正常进行业务操作。 严禁手动修改Hive元数据库的数据(hivemeta数据库) 修改Hive元数据可能会导致Hive数据解析错误,Hive无法正常提供服务。 禁止对Hive的元数据表手动进行insert和update操作 修改Hive元数据可能会导致Hive数据解析错误,Hive无法正常提供服务。 严禁修改Hive私有文件目录hdfs:///tmp/hive-scratch的权限 修改该目录权限可能会导致Hive服务不可用。 严禁修改Kafka配置文件中broker.id 修改Kafka配置文件中broker.id将会导致该节点数据失效。 严禁修改节点主机名 主机名修改后会导致该主机上相关实例和上层组件无法正常提供服务,且无法修复。 禁止重装节点OS 该操作会导致MRS集群进入异常状态,影响MRS集群使用。 禁止使用私有镜像 该操作会导致MRS集群进入异常状态,影响MRS集群使用。
  • 邀请管理员 创建者可以邀请他人来进行企业管理:维护部门、群组及进行授权等。 邀请的管理员手机账号必须为已开通华为云服务的华为账号。 受邀管理员根据接收到邮件里的邀请链接,登录到联营买家页面,即可成功成为该企业的管理员,管理员状态为:“已激活”。 已选择“给客户用”的角色账号,不能被邀请成为管理员。 一旦有人接受邀请成为管理员,代理商就无法解散企业,仅管理员可以解散。 父主题: 联营账号更多操作流程
  • Kafka开发应用时,需要准备的开发和运行环境如表1所示: 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows 7以上版本。 运行环境:Windows系统或Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装和配置IntelliJ IDEA 开发环境的基本配置。版本要求:JDK使用1.8版本,IntelliJ IDEA使用2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 安装JDK 开发和运行环境的基本配置。版本要求如下: 服务端和客户端仅支持自带的OpenJDK,版本为1.8.0_272,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的。 X86客户端: Oracle JDK:支持1.8版本 IBM JDK:支持1.8.5.11版本 TaiShan客户端: OpenJDK:支持1.8.0_272版本 说明: 基于安全考虑,服务端只支持TLS V1.2及以上的加密协议。 IBM JDK默认只支持TLS V1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS V1.0/V1.1/V1.2,详情参见https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-Zip 16.04版本。
  • 代码样例 Token认证机制支持API,用户可在二次开发样例的Producer()和Consumer()中对其进行配置。 Producer()配置的样例代码如下: public static Properties initProperties() { Properties props = new Properties(); KafkaProperties kafkaProc = KafkaProperties.getInstance(); // Broker地址列表 props.put(BOOTSTRAP_SERVER, kafkaProc.getValues(BOOTSTRAP_SERVER, "localhost:21007")); // 客户端ID props.put(CLIENT_ID, kafkaProc.getValues(CLIENT_ID, "DemoProducer")); // Key序列化类 props.put(KEY_SERIALIZER, kafkaProc.getValues(KEY_SERIALIZER, "org.apache.kafka.common.serialization.StringSerializer")); // Value序列化类 props.put(VALUE_SERIALIZER, kafkaProc.getValues(VALUE_SERIALIZER, "org.apache.kafka.common.serialization.StringSerializer")); // 协议类型:当前支持配置为SASL_PLAINTEXT或者PLAINTEXT props.put(SECURITY_PROTOCOL, kafkaProc.getValues(SECURITY_PROTOCOL, "SASL_PLAINTEXT")); // 服务名 props.put(SASL_KERBEROS_SERVICE_NAME, "kafka"); // 域名 props.put(KERBEROS_DOMAIN_NAME, kafkaProc.getValues(KERBEROS_DOMAIN_NAME, "hadoop.hadoop.com")); // 分区类名 props.put(PARTITIONER_NAME, kafkaProc.getValues(PARTITIONER_NAME, "com.huawei.bigdata.kafka.example.SimplePartitioner")); // 生成Token配置 StringBuilder token = new StringBuilder(); String LINE_SEPARATOR = System.getProperty("line.separator"); token.append("org.apache.kafka.common.security.scram.ScramLoginModule required").append(LINE_SEPARATOR); /** * 用户自己生成的Token的TOKENID */ token.append("username=\"PPVz2cxuQC-okwJVZnFKFg\"").append(LINE_SEPARATOR); /** * 用户自己生成的Token的HMAC */ token.append("password=\"pL5nHsIUODg5u0dRM+o62cOIf/j6yATSt6uaPBYfIb29dj/jbpiAnRGSWDJ6tL4KXo89dot0axcRIDsMagyN4g==\"").append(LINE_SEPARATOR); token.append("tokenauth=true;"); // 用户使用的SASL机制,配置为SC RAM -SHA-512 props.put("sasl.mechanism", "SCRAM-SHA-512"); props.put("sasl.jaas.config", token.toString()); return props; } Consumer()配置的样例代码如下: public static Properties initProperties() { Properties props = new Properties(); KafkaProperties kafkaProc = KafkaProperties.getInstance(); // Broker连接地址 props.put(BOOTSTRAP_SERVER, kafkaProc.getValues(BOOTSTRAP_SERVER, "localhost:21007")); // Group id props.put(GROUP_ID, kafkaProc.getValues(GROUP_ID, "DemoConsumer")); // 是否自动提交offset props.put(ENABLE_AUTO_COMMIT, kafkaProc.getValues(ENABLE_AUTO_COMMIT, "true")); // 自动提交offset的时间间隔 props.put(AUTO_COMMIT_INTERVAL_MS, kafkaProc.getValues(AUTO_COMMIT_INTERVAL_MS,"1000")); // 会话超时时间 props.put(SESSION_TIMEOUT_MS, kafkaProc.getValues(SESSION_TIMEOUT_MS, "30000")); // 消息Key值使用的反序列化类 props.put(KEY_DESERIALIZER, kafkaProc.getValues(KEY_DESERIALIZER, "org.apache.kafka.common.serialization.StringDeserializer")); // 消息内容使用的反序列化类 props.put(VALUE_DESERIALIZER, kafkaProc.getValues(VALUE_DESERIALIZER, "org.apache.kafka.common.serialization.StringDeserializer")); // 安全协议类型 props.put(SECURITY_PROTOCOL, kafkaProc.getValues(SECURITY_PROTOCOL, "SASL_PLAINTEXT")); // 服务名 props.put(SASL_KERBEROS_SERVICE_NAME, "kafka"); // 域名 props.put(KERBEROS_DOMAIN_NAME, kafkaProc.getValues(KERBEROS_DOMAIN_NAME, "hadoop.hadoop.com")); // 生成Token配置 StringBuilder token = new StringBuilder(); String LINE_SEPARATOR = System.getProperty("line.separator"); token.append("org.apache.kafka.common.security.scram.ScramLoginModule required").append(LINE_SEPARATOR); /** * 用户自己生成的Token的TOKENID */ token.append("username=\"PPVz2cxuQC-okwJVZnFKFg\"").append(LINE_SEPARATOR); /** * 用户自己生成的Token的HMAC */ token.append("password=\"pL5nHsIUODg5u0dRM+o62cOIf/j6yATSt6uaPBYfIb29dj/jbpiAnRGSWDJ6tL4KXo89dot0axcRIDsMagyN4g==\"").append(LINE_SEPARATOR); token.append("tokenauth=true;"); // 用户使用的SASL机制,配置为SCRAM-SHA-512 props.put("sasl.mechanism", "SCRAM-SHA-512"); props.put("sasl.jaas.config", token.toString()); return props; }
  • 常用概念 Topic Kafka维护的同一类的消息称为一个Topic。 Partition 每一个Topic可以被分为多个Partition,每个Partition对应一个可持续追加的、有序不可变的log文件。 Producer 将消息发往Kafka topic中的角色称为Producer。 Consumer 从Kafka Topic中获取消息的角色称为Consumer。 Broker Kafka集群中的每一个节点服务器称为Broker。 keytab file 存放用户信息的密钥文件。应用程序采用此密钥文件在集群中进行API方式认证。
  • 代码样例 通过SpringBoot实现Kafka生产消费的样例代码如下: @RestController public class MessageController { private final static Logger LOG = LoggerFactory.getLogger(MessageController.class); @Autowired private KafkaProperties kafkaProperties; @GetMapping("/produce") public String produce() { Producer producerThread = new Producer(); producerThread.init(this.kafkaProperties); producerThread.start(); String message = "Start to produce messages"; LOG.info(message); return message; } @GetMapping("/consume") public String consume() { Consumer consumerThread = new Consumer(); consumerThread.init(this.kafkaProperties); consumerThread.start(); LOG.info("Start to consume messages"); // 等到180s后将consumer关闭,实际执行过程中可修改 try { Thread.sleep(consumerThread.getThreadAliveTime()); } catch (InterruptedException e) { LOG.info("Occurred InterruptedException: ", e); } finally { consumerThread.close(); } return String.format("Finished consume messages"); } }
  • Kafka开发应用时,需要准备的开发和运行环境如表1所示: 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows 7以上版本。 运行环境:Windows系统或Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装和配置IntelliJ IDEA 开发环境的基本配置。版本要求:JDK使用1.8版本,IntelliJ IDEA使用2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 安装JDK 开发和运行环境的基本配置。版本要求如下: 服务端和客户端仅支持自带的OpenJDK,版本为1.8.0_272,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的。 X86客户端: Oracle JDK:支持1.8版本 IBM JDK:支持1.8.5.11版本 TaiShan客户端: OpenJDK:支持1.8.0_272版本 说明: 基于安全考虑,服务端只支持TLS V1.2及以上的加密协议。 IBM JDK默认只支持TLS V1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS V1.0/V1.1/V1.2,详情参见https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-Zip 16.04版本。
  • Flink常用接口 Flink主要使用到如下这几个类: StreamExecutionEnvironment:是Flink流处理的基础,提供了程序的执行环境。 DataStream:Flink用类DataStream来表示程序中的流式数据。用户可以认为它们是含有重复数据的不可修改的集合(collection),DataStream中元素的数量是无限的。 KeyedStream:DataStream通过keyBy分组操作生成流,通过设置的key值对数据进行分组。 WindowedStream:KeyedStream通过window窗口函数生成的流,设置窗口类型并且定义窗口触发条件,然后在窗口数据上进行一些操作。 AllWindowedStream:DataStream通过window窗口函数生成的流,设置窗口类型并且定义窗口触发条件,然后在窗口数据上进行一些操作。 ConnectedStreams:将两条DataStream流连接起来并且保持原有流数据的类型,然后进行map或者flatMap操作。 JoinedStreams:在窗口上对数据进行等值join操作(等值就是判断两个值相同的join,比如a.id = b.id),join操作是coGroup操作的一种特殊场景。 CoGroupedStreams:在窗口上对数据进行coGroup操作,可以实现流的各种join类型。 图1 Flink Stream的各种流类型转换
  • 常用概念 Topic Kafka维护的同一类的消息称为一个Topic。 Partition 每一个Topic可以被分为多个Partition,每个Partition对应一个可持续追加的、有序不可变的log文件。 Producer 将消息发往Kafka Topic中的角色称为Producer。 Consumer 从Kafka topic中获取消息的角色称为Consumer。 Broker Kafka集群中的每一个节点服务器称为Broker。 keytab file 存放用户信息的密钥文件。应用程序采用此密钥文件在集群中进行API方式认证。
  • 准备运行环境 在节点上安装客户端,例如安装到“/opt/client”目录,安装方法可参考《 MapReduce服务 用户指南》的“客户端管理”章节。 确认服务端HDFS组件已经安装,并正常运行。 客户端运行环境已安装1.7或1.8版本的JDK。 获取并解压缩安装“MRS_HDFS_Client.tar”包。执行如下命令解压。 tar -xvf MRS_HDFS_Client.tar tar -xvf MRS_HDFS_ClientConfig.tar 由于不兼容老版本客户端,建议用户获取与服务端集群相同版本的客户端安装包进行安装部署。 进入解压文件夹,即“MRS_HDFS_ClientConfig”,执行下列命令安装客户端。 sh install.sh /opt/client 其中“/opt/client”为用户自定义路径,此处仅为举例。 进入客户端安装目录“/opt/client”,执行下列命令初始化环境变量。 source bigdata_env
  • 安装GDB 下载GDB的依赖包termcap的源代码。 wget https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz 解压termcap源码。 tar -zxvf termcap-1.3.1.tar.gz 编译安装termcap。 cd termcap-1.3.1/ ./configure && make && make install 下载GDB源码。 cd ~ wget https://ftp.gnu.org/gnu/gdb/gdb-7.6.1.tar.gz 解压GDB源码 tar -zxvf gdb-7.6.1.tar.gz 编译安装GDB。 cd gdb-7.6.1/ ./configure && make && make install 查看GDB是否安装成功。 gdb --version 打印出gdb版本信息即为安装成功。
  • 参数解释 “coordinator.xml”中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 frequency 流程定时执行的时间间隔 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 resourceManager MapReduce ResourceManager地址 queueName 任务处理时使用的MapReduce队列名 nameNode HDFS NameNode集群地址 “${变量名}”表示:该值来自job.properties所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见配置Oozie作业运行参数)
  • 准备开发环境 在进行应用开发时,要准备的开发和运行环境如表1所示。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows 7以上版本。 运行环境:Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装JDK 开发和运行环境的基本配置。版本要求如下: 服务端和客户端仅支持自带的OpenJDK,版本为1.8.0_272,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的。 X86客户端:Oracle JDK:支持1.8版本;IBM JDK:支持1.8.5.11版本。 TaiShan客户端:OpenJDK:支持1.8.0_272版本。 安装和配置IDEA 用于开发Flink应用程序的工具。版本要求:2019.1或其他兼容版本。 安装Scala Scala开发环境的基本配置。版本要求:2.11.7。 安装Scala插件 Scala开发环境的基本配置。版本要求:1.5.4。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-Zip 16.04版本。
  • 操作步骤 在Windows本地运行程序,需要配置HTTPS SSL证书。 登录集群任意节点,进入如下目录下载ca.crt文件。 cd ${BIGDATA_HOME}/om-agent_8.1.0.1/nodeagent/security/cert/subcert/certFile/ 将ca.crt文件下载到本地,以管理员的身份打开cmd。 输入如下命令: keytool -import -v -trustcacerts -alias ca -file "D:\xx\ca.crt" -storepass changeit -keystore "%JAVA_HOME%\jre\lib\security\cacerts" 其中“D:\xx\ca.crt”是实际ca.crt文件存放路径;“%JAVA_HOME% ”为JDK安装路径。 在开发环境中(例如IDEA中),右击OozieRestApiMain.java,单击“Run 'OozieRestApiMain.main()'”运行对应的应用程序工程。 使用Oozie客户端执行以下命令运行样例程序: oozie job -oozie https://Oozie业务IP:21003/oozie -config job.properties -run 其中需要提前将待使用样例工程目录“src\main\resources”中的“job.properties”文件复制到Oozie客户端所在目录。
  • 常用概念 Topic Kafka维护的同一类的消息称为一个Topic。 Partition 每一个Topic可以被分为多个Partition,每个Partition对应一个可持续追加的、有序不可变的log文件。 Producer 将消息发往Kafka Topic中的角色称为Producer。 Consumer 从Kafka topic中获取消息的角色称为Consumer。 Broker Kafka集群中的每一个节点服务器称为Broker。 keytab file 存放用户信息的密钥文件。应用程序采用此密钥文件在集群中进行API方式认证。
  • 参数解释 “coordinator.xml”中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 frequency 流程定时执行的时间间隔 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 resourceManager MapReduce ResourceManager地址 queueName 任务处理时使用的MapReduce队列名 nameNode HDFS NameNode集群地址 “${变量名}”表示:该值来自“job.properties”所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见配置Oozie作业运行参数)
  • 准备运行环境 进行应用开发时,需要同时准备代码的运行调测的环境,用于验证应用程序运行正常。 如果使用Linux环境调测程序,需在准备安装集群客户端的Linux节点并获取相关配置文件。 在节点中安装客户端,例如客户端安装目录为“/opt/client”。 客户端机器的时间与集群的时间要保持一致,时间差小于5分钟。 集群的Master节点或者Core节点使用客户端可参考集群内节点使用MRS客户端,MRS集群外客户端的安装操作可参考集群外节点使用MRS客户端。 登录 FusionInsight Manager页面,下载集群客户端软件包至主管理节点并解压,然后以root用户登录主管理节点,进入集群客户端解压路径下,复制“FusionInsight_Cluster_1_Services_ClientConfig\Flink\config”路径下的所有配置文件至客户端节点,放置到与准备放置编译出的jar包同目录的“conf”目录下,用于后续调测,例如“/opt/client/conf”。 例如客户端软件包为“FusionInsight_Cluster_1_Services_Client.tar”,下载路径为主管理节点的“/tmp/FusionInsight-Client”: cd /tmp/FusionInsight-Client tar -xvf FusionInsight_Cluster_1_Services_Client.tar tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar cd FusionInsight_Cluster_1_Services_ClientConfig scp Flink/config/* root@客户端节点IP地址:/opt/client/conf 主要配置文件说明如表2所示。 表2 配置文件 文件名称 作用 core-site.xml 配置Flink详细参数。 hdfs-site.xml 配置HDFS详细参数。 yarn-site.xml 配置Yarn详细参数。 flink-conf.yaml Flink客户端配置文件。 检查客户端节点网络连接。 在安装客户端过程中,系统会自动配置客户端节点“hosts”文件,建议检查“/etc/hosts”文件内是否包含集群内节点的主机名信息,如未包含,需要手动复制解压目录下的“hosts”文件中的内容到客户端所在节点的hosts文件中,确保本地机器能与集群各主机在网络上互通。
共100000条