• [运维宝典] MRS 2.1.0版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件LoaderHiveStormPrestoImpalaTezHadoopSparkHBaseManager(Tomcat) 三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目xml文件确认jar包版本是否在2.0-2.14.1版本之间。Linux:切换到项目目录下,运行命令find . / | grep log4j-api,find . / | grep log4j-core并查看输出是否含有两个关键jar包,并通过jar包文件名和项目xml文件确认jar包版本是否在2.0-2.14.1版本之间。登录集群所有节点,使用omm用户执行以下命令:替换软连接,备份 log4j-api 包su - ommcd /opt/client/Spark/spark/jars/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/client/Spark/spark/jars/log4j-api-2.8.2.jar /opt/client/Spark/spark/jars/log4j-api-2.8.2.jar-bakcd /opt/client/HBase/hbase/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/client/HBase/hbase/lib/log4j-api-2.8.2.jar /opt/client/HBase/hbase/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/share/spark/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/share/spark/log4j-api-2.8.2.jar /opt/Bigdata/share/spark/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/share/distcp/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/share/distcp/log4j-api-2.8.2.jar /opt/Bigdata/share/distcp/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/share/mapreduce/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/share/mapreduce/log4j-api-2.8.2.jar /opt/Bigdata/share/mapreduce/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/om-0.0.1/share/om/controller/lib/ ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-api-2.8.2.jar /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/log4j-api-2.9.1.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/log4j-api-2.9.1.jar-bakcd /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/cp /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.10.0.jarmv /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.8.2.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-api-2.8.2.jar-bakcd /opt/client/Impala/impala/dependencyln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/client/Impala/impala/dependency/log4j-api-2.8.2.jar /opt/client/Impala/impala/dependency/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/log4j-api-2.8.2.jar-bakcd /opt/client/HDFS/hadoop/share/hadoop/tools/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/client/HDFS/hadoop/share/hadoop/tools/lib/log4j-api-2.8.2.jar /opt/client/HDFS/hadoop/share/hadoop/tools/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-api-2.8.2.jar-bakcd /opt/executor/webapps/executor/WEB-INF/lib/cp /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar /opt/executor/webapps/executor/WEB-INF/lib/log4j-api-2.10.0.jarmv /opt/executor/webapps/executor/WEB-INF/lib/log4j-api-2.8.2.jar /opt/executor/webapps/executor/WEB-INF/lib/log4j-api-2.8.2.jar-bakfind . / | grep log4j-core查找出相应的jar包和路径替换软连接,备份 log4j-core 包cd /opt/client/Spark/spark/jars/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/client/Spark/spark/jars/log4j-core-2.8.2.jar /opt/client/Spark/spark/jars/log4j-core-2.8.2.jar-bakcd /opt/client/HBase/hbase/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/client/HBase/hbase/lib/log4j-core-2.8.2.jar /opt/client/HBase/hbase/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/share/spark/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/share/spark/log4j-core-2.8.2.jar /opt/Bigdata/share/spark/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/share/distcp/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/share/distcp/log4j-core-2.8.2.jar /opt/Bigdata/share/distcp/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/share/mapreduce/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/share/mapreduce/log4j-core-2.8.2.jar /opt/Bigdata/share/mapreduce/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-HBase-2.1.1.0101/hbase/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/om-0.0.1/share/om/controller/lib/ ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-core-2.8.2.jar /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/log4j-core-2.9.1.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/presto-elasticsearch/log4j-core-2.9.1.jar-bakcd /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/cp /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.10.0.jarmv /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-core-2.8.2.jar-bakcd /opt/client/Impala/impala/dependencyln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/client/Impala/impala/dependency/log4j-core-2.8.2.jar /opt/client/Impala/impala/dependency/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Hadoop-3.1.1/hadoop/share/hadoop/tools/lib/log4j-core-2.8.2.jar-bakcd /opt/client/HDFS/hadoop/share/hadoop/tools/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/client/HDFS/hadoop/share/hadoop/tools/lib/log4j-core-2.8.2.jar /opt/client/HDFS/hadoop/share/hadoop/tools/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/hive-hadoop2/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Spark-2.3.2/spark/jars/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-core-2.8.2.jar-bakcd /opt/executor/webapps/executor/WEB-INF/lib/cp /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar /opt/executor/webapps/executor/WEB-INF/lib/log4j-core-2.10.0.jarmv /opt/executor/webapps/executor/WEB-INF/lib/log4j-core-2.8.2.jar /opt/executor/webapps/executor/WEB-INF/lib/log4j-core-2.8.2.jar-bak Storm服务应该使用此命令:zip -q -d /opt/Bigdata/MRS_2.1.0/install/FusionInsight-Storm-1.2.1/storm/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class             处理,目的是删除JndiLookup.class这个影响的类。(如过想验证是否删除了此类,执行命令后去对应路径查找log4j-core-2.8.2.jar,下载到本地解压后会找不到此类说明执行成功。) 如果客户安装过MRS服务的补丁,以上jar包路径稍有不同,请以实际情况为准。四、MRS集群侧组件修复指引1. 修改MRS Manager Tomcat1)登录MRS集群主备oms节点,执行以下命令:vi /opt/Bigdata/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出vim /opt/executor/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出2)在MRS主节点上查询tomcat进程ps -ef | grep apache-tomcat切换成omm用户su - ommsh /opt/Bigdata/tomcat/bin/shutdown.shsh /opt/Bigdata/tomcat/bin/startup.shsh /opt/executor/bin/restart-executor.sh 3)等待3~5分钟重新拉起后ps -ef | grep tomcat查看如下图所示修改完成2. 修改MRS Controller1)登录MRS集群主备oms节点,执行以下命令:vi /opt/Bigdata/om-0.0.1/sbin/controller.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出2)在MRS主节点上查询controller进程ps -ef | grep ControllerService切换成omm用户sh /opt/Bigdata/om-0.0.1/sbin/restart-controller.sh 3)等待3~5分钟重新拉起后ps -ef | grep ControllerService查看如下图所示修改完成3. 修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。修改配置后尽量使用滚动重启,以减少对业务的影响。 Loader1)在Manager页面Loader组件全部配置中,搜索OPTS配置,在LOADER_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】 2) 点击保存配置,重启Loader。3) 在对应实例后台查看进程 ps -ef|grep Loader,查看参数已生效。Hive1)在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启Hive。3) 在对应实例后台查看进程 ps -ef|grep HiveService,查看参数已生效。Impala1) 登录Impala各实例安装节点,修改脚本/opt/Bigdata/MRS_2.1.0/install/FusionInsight-Impala-3.2.0/impala/sbin/impala-env.sh,在impala-env.sh末尾追加新一行参数export JAVA_TOOL_OPTIONS="-Dlog4j2.formatMsgNoLookups=true ${JAVA_TOOL_OPTIONS}"2) 保存后滚动重启Impala服务 Presto1)在Manager页面Presto组件全部配置中,搜索OPTS配置,在Presto->Coordinator和Presto->Worker中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启。3) 在对应实例后台查看进程,查看参数已生效。Tez1)在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef|grep tez,查看参数已生效。 Hadoop1)在Manager页面HDFS和MapReduce组件全部配置中,搜索OPTS配置,在HDFS->NameNode、HDFS->Zkfc、HDFS->DataNode、HDFS->JournalNode、Mapreduce->JobHistoryServer中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启HDFS和MapReduce。3) 在对应实例后台查看进程,查看参数已生效。Spark1)在Manager页面Spark组件全部配置中,搜索OPTS配置,在Spark->JobHistory中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启。3) 在对应实例后台查看进程,查看参数已生效。 HBase1)在Manager页面HBase组件全部配置中,搜索OPTS配置,在HBase->HMaster、HBase->RegionServer、HBase->RESTServer、HBase->ThriftServer中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启。3) 在对应实例后台查看进程,查看参数已生效。Yarn1)在Manager页面Yarn组件全部配置中,搜索OPTS配置,在Yarn->ResourceManager、Yarn->NodeManager、Yarn->TimelineServer中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启。3) 在对应实例后台查看进程,查看参数已生效。
  • [运维宝典] MRS 3.1.1版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件• Hive• Oozie• Flink• Manager(Tomcat)• Ranger• Tez三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:• Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。• Linux:切换到项目目录下,运行命令 find . -name 'log4j*.jar'并查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。重启应用会影响业务,请评估影响后执行。五、MRS集群侧组件修复指引修改MRS Manager Tomcat1) 登录MRS集群主备master节点,主备节点ip可在 “主机管理”页面获取,主机列表中标记记“★”的节点为主master节点,标记“☆”的节点为备master节点。 2) 执行以下命令:vi /opt/Bigdata/om-server/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出3) 对主master节点执行以下命令,切换到omm用户并重启tomcatsu - ommsh /opt/Bigdata/om-server/tomcat/bin/shutdown.shsh /opt/Bigdata/om-server/tomcat/bin/startup.sh4) 自动重新拉起后ps -ef | grep apache-tomcat查看如下图所示修改完成修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。配置或文件修改需重启后生效,重启过程会影响业务运行,请评估影响后执行。请尽量使用滚动重启,以减少对业务的影响,各涉及组件操作方法如下Hive1) 在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Hive。3) 在对应实例后台查看进程 ps -ef | grep HiveService,查看参数已生效。Tez1) 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef|grep tez,查看参数已生效。Oozie1) 在Manager页面Oozie组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Oozie。3) 在对应实例后台查看进程 ps -ef|grep oozie,查看参数已生效。Ranger1) 在Manager页面Ranger组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Ranger。3) 在对应实例后台查看进程 ps -ef|grep ranger,查看参数已生效。Flink1) 在Manager页面Flink组件全部配置中,搜索FLINK_SERVER_GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Flink。3) 在对应实例后台查看进程 ps -ef|grep flink,查看参数已生效。4) 修改Flink客户端安装目录下的Flink/flink/conf/flink-conf.yaml中的env.java.opts,在配置末尾追加-Dlog4j2.formatMsgNoLookups=true
  • [运维宝典] MRS 3.0.5版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件• Hive• Flink• Spark• Manager(Tomcat)• Tez• Impala• Ranger• Presto• Oozie• Storm• Loader三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:• Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。• Linux:切换到项目目录下,运行命令 find . -name 'log4j*.jar'并查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。重启应用会影响业务,请评估影响后执行。五、MRS集群侧组件修复指引修改MRS Manager Tomcat1) 登录MRS集群主备master节点,主备节点ip可在 “主机管理”页面获取,主机列表中标记记“★”的节点为主master节点,标记“☆”的节点为备master节点。2) 执行以下命令:vi /opt/Bigdata/om-server/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出3) 执行以下命令切换到omm用户并重启su - ommsh /opt/Bigdata/om-server/tomcat/bin/shutdown.shsh /opt/Bigdata/om-server/tomcat/bin/startup.sh4) 自动重新拉起后ps -ef | grep apache-tomcat查看如下图所示修改完成修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。配置或文件修改需重启后生效,重启过程会影响业务运行,请评估影响后执行。请尽量使用滚动重启,以减少对业务的影响,各涉及组件操作方法如下:Hive1) 在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Hive。3) 在对应实例后台查看进程 ps -ef | grep HiveService,查看参数已生效。Tez1) 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef | grep tez,查看参数已生效。Oozie1) 在Manager页面Oozie组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Oozie。3) 在对应实例后台查看进程 ps -ef | grep oozie,查看参数已生效。Ranger1) 在Manager页面Ranger组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Ranger。3) 在对应实例后台查看进程 ps -ef | grep ranger,查看参数已生效。Flink1) 修改Flink客户端安装目录下的Flink/flink/conf/flink-conf.yaml中的env.java.opts,在配置末尾追加-Dlog4j2.formatMsgNoLookups=trueSpark1) 在Manager页面Spark组件全部配置中,搜索GC配置,在SPARK_DAEMON_JAVA_OPTS、spark.driver.extraJavaOptions、spark.yarn.cluster.driver.extraJavaOptions 、spark.executor.extraJavaOptions    中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Spark。3) 在对应实例后台查看进程 ps -ef | grep jdbcserver,查看参数已生效。4) 修改spark客户端目录Spark/spark/conf/spark-default.conf,在spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】Presto1) 停止Presto服务2) 在所有Presto实例安装节点执行命令删除log4j-core包中的jndilookup类su - ommzip -q -d /opt/Bigdata/FusionInsight_Presto_8.0.2.1/install/FusionInsight-Presto-333/presto/plugin/elasticsearch/log4j-core-2.9.1.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3) 重启Presto。Impala1) 登录Impala各实例安装节点,修改脚本/opt/Bigdata/FusionInsight_Impala_8.0.2.1/install/FusionInsight-Impala-3.4.0/impala/sbin/impala-env.sh,在第27行添加export JAVA_TOOL_OPTIONS="-Dlog4j2.formatMsgNoLookups=true ${JAVA_TOOL_OPTIONS}"(可以修改master节点/opt/Bigdata/FusionInsight_Impala_8.0.2.1/install/FusionInsight-Impala-3.4.0/impala/sbin/impala-env.sh文件后,使用omm用户scp到其他各Impala实例安装节点相同路径下。)保存后重启Impala服务Storm1) 停止Storm服务2) 在所有Storm实例安装节点执行命令删除log4j-core包中的jndilookup类su - ommzip -q -d /opt/Bigdata/FusionInsight_HD_8.0.2.1/install/FusionInsight-Storm-1.2.1/storm/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3) 重启Storm。Loader1) 在Manager页面Loader组件全部配置中,搜索LOADER_GC_OPTS配置,在配置末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Loader。3) 在对应实例后台查看进程 ps -ef|grep Sqoop,查看参数已生效。
  • [运维宝典] MRS 3.0.2版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件• Hive• Flink• Spark• Manager(Tomcat)• Tez• Ranger• Oozie• Storm• Loader三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:• Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。• Linux:切换到项目目录下,运行命令 find . -name 'log4j*.jar'并查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。重启应用会影响业务,请评估影响后执行。五、MRS集群侧组件修复指引修改MRS Manager Tomcat1) 登录MRS集群主备master节点,主备节点ip可在 “主机管理”页面获取,主机列表中标记记“★”的节点为主master节点,标记“☆”的节点为备master节点。2) 执行以下命令:vi /opt/Bigdata/om-server/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出3) 对主master节点执行以下命令,切换到omm用户并重启tomcatsu - ommsh /opt/Bigdata/om-server/tomcat/bin/shutdown.shsh /opt/Bigdata/om-server/tomcat/bin/startup.sh4) 自动重新拉起后ps -ef | grep apache-tomcat查看如下图所示修改完成修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。配置或文件修改需重启后生效,重启过程会影响业务运行,请评估影响后执行。请尽量使用滚动重启,以减少对业务的影响,各涉及组件操作方法如下Hive1) 在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Hive。3) 在对应实例后台查看进程 ps -ef | grep HiveService,查看参数已生效。Tez1) 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef|grep tez,查看参数已生效。Oozie1) 在Manager页面Oozie组件全部配置中,搜索GC_OPTS配置,在所有角色的c配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Oozie。3) 在对应实例后台查看进程 ps -ef|grep oozie,查看参数已生效。Ranger1) 在Manager页面Ranger组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Ranger。3) 在对应实例后台查看进程 ps -ef|grep ranger,查看参数已生效。Flink1) 修改Flink客户端安装目录下的Flink/flink/conf/flink-conf.yaml中的env.java.opts,在配置末尾追加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】Spark1) 在Manager页面Spark组件全部配置中,搜索GC配置,在SPARK_DAEMON_JAVA_OPTS、spark.driver.extraJavaOptions、spark.executor.extraJavaOptions、spark.yarn.cluster.driver.extraJavaOptions中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Spark。3) 在对应实例后台查看进程 ps -ef|grep jdbcserver,查看参数已生效。4) 修改spark客户端目录Spark/spark/conf/spark-default.conf,在spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】Storm1) 停止Storm服务2) 在所有Storm实例安装节点执行命令删除log4j-core包中的jndilookup类su - ommzip -q -d /opt/Bigdata/FusionInsight_HD_8.0.2/install/FusionInsight-Storm-1.2.1/storm/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3) 重启Storm。Loader1) 在Manager页面Loader组件全部配置中,搜索LOADER_GC_OPTS配置,在配置末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Loader。3) 在对应实例后台查看进程 ps -ef | grep Sqoop,查看参数已生效。
  • [基础组件] HetuEngine如何添加mysql类型的数据源,在MRS的数据源类型中没有mysql这一类型
    【功能模块】HetuEngine【操作步骤&问题现象】1、HetuEngine如何添加mysql类型的数据源2、在MRS的数据源类型中没有mysql这一类型【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [运维宝典] MRS 1.8.10版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件StormLoaderManager(Tomcat) 三、漏洞规避指导MRS Manager(Tomcat)漏洞规避指导1)登录MRS集群主备Master节点,执行以下命令,切换到omm用户> su - omm2)执行以下命令删除JndiLookup.class,避免漏洞触发:> zip -q -d /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)在MRS主节点上重启Manager Tomcat服务以生效,重启过程中Manager页面将中断访问约1-3分钟:> sh /opt/Bigdata/tomcat/bin/shutdown.sh> sh /opt/Bigdata/tomcat/bin/startup.sh 1. MRS Executor(Tomcat)漏洞规避指导1)登录MRS集群主/备Master节点,执行以下命令,切换到omm用户> su - omm2)执行以下命令删除JndiLookup.class,避免漏洞触发:> zip -q -d /opt/executor/webapps/executor/WEB-INF/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)在MRS主节点上重启Executor Tomcat服务以生效, 重启过程中MRS Console页面作业管理中提交作业将暂时不可用:> sh /opt/executor/bin/restart-executor.sh 2. Loader、Storm大数据组件漏洞规避指导1)登录MRS集群主Master节点,执行以下命令,切换到omm用户> su - omm2)进入/opt/share/log4j-core-2.8.2目录,执行以下命令删除JndiLookup.class,避免漏洞触发:      > cd /opt/share/log4j-core-2.8.2> cp log4j-core-2.8.2.jar log4j-core-2.8.2.jar_bak> zip -q -d /opt/share/log4j-core-2.8.2/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)把修改后的log4j-core-2.8.2.jar包分发到集群所有节点:a. 查询集群所有节点(节点地址如下图所示)> cat /etc/hostsb. 分发修改后的jar包至集群所有节点(将命令中的<host_ip>替换成上述命令查询到的节点ip后执行)      > scp log4j-core-2.8.2.jar <host_ip>:`pwd`4)登录MRS Manager页面,重启Loader/Storm服务
  • [运维宝典] MRS 1.7.1版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件Manager(Tomcat)Executor(Tomcat)LoaderStorm 三、漏洞规避指导1. MRS Manager(Tomcat)漏洞规避指导1)登录MRS集群主备Master节点,执行以下命令,切换到omm用户> su - omm2)执行以下命令删除JndiLookup.class,避免漏洞触发:> zip -q -d /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)在MRS主节点上重启Manager Tomcat服务以生效,重启过程中Manager页面将中断访问约1-3分钟:> sh /opt/Bigdata/tomcat/bin/shutdown.sh> sh /opt/Bigdata/tomcat/bin/startup.sh 2. MRS Executor(Tomcat)漏洞规避指导1)登录MRS集群主/备Master节点,执行以下命令,切换到omm用户> su - omm2)执行以下命令删除JndiLookup.class,避免漏洞触发:> zip -q -d /opt/executor/webapps/executor/WEB-INF/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)在MRS主节点上重启Executor Tomcat服务以生效, 重启过程中MRS Console页面作业管理中提交作业将暂时不可用:> sh /opt/executor/bin/restart-executor.sh 3. Loader、Storm大数据组件漏洞规避指导1)登录MRS集群主Master节点,执行以下命令,切换到omm用户> su - omm2)进入/opt/share/log4j-core-2.8.2目录,执行以下命令删除JndiLookup.class,避免漏洞触发:      > cd /opt/share/log4j-core-2.8.2> cp log4j-core-2.8.2.jar log4j-core-2.8.2.jar_bak> zip -q -d /opt/share/log4j-core-2.8.2/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3)把修改后的log4j-core-2.8.2.jar包分发到集群所有节点:a. 查询集群所有节点(节点地址如下图所示)> cat /etc/hostsb. 分发修改后的jar包至集群所有节点(将命令中的<host_ip>替换成上述命令查询到的节点ip后执行)      > scp log4j-core-2.8.2.jar <host_ip>:`pwd`4)登录MRS Manager页面,重启Loader/Storm服务
  • [运维宝典] MRS 3.1.0版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件• Hive• Flink• Spark• Manager(Tomcat)• Tez• Impala• Ranger• Presto• Oozie三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:• Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。• Linux:切换到项目目录下,运行命令 find . -name 'log4j*.jar'并查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。重启应用会影响业务,请评估影响后执行。五、MRS集群侧组件修复指引修改MRS Manager Tomcat1) 登录MRS集群主备master节点,主备节点ip可在 “主机管理”页面获取,主机列表中标记记“★”的节点为主master节点,标记“☆”的节点为备master节点。2)执行以下命令:vi /opt/Bigdata/om-server/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出3)对主master节点执行以下命令,切换到omm用户并重启tomcatsu - ommsh /opt/Bigdata/om-server/tomcat/bin/shutdown.shsh /opt/Bigdata/om-server/tomcat/bin/startup.sh4)自动重新拉起后ps -ef | grep apache-tomcat查看如下图所示修改完成修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。配置或文件修改需重启后生效,重启过程会影响业务运行,请评估影响后执行。请尽量使用滚动重启,以减少对业务的影响,各涉及组件操作方法如下Hive1) 在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Hive。3) 在对应实例后台查看进程 ps -ef|grep HiveService,查看参数已生效。Tez1) 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef|grep tez,查看参数已生效。Oozie1) 在Manager页面Oozie组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Oozie。3) 在对应实例后台查看进程 ps -ef|grep oozie,查看参数已生效。Ranger1) 在Manager页面Ranger组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Ranger。3) 在对应实例后台查看进程 ps -ef|grep ranger,查看参数已生效。Flink1) 在Manager页面Flink组件全部配置中,搜索FLINK_SERVER_GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Flink。3) 在对应实例后台查看进程 ps -ef|grep flink,查看参数已生效。4) 修改Flink客户端安装目录下的Flink/flink/conf/flink-conf.yaml中的env.java.opts,在配置末尾追加-Dlog4j2.formatMsgNoLookups=trueSpark1) 在Manager页面Spark组件全部配置中,搜索GC配置,在SPARK_DAEMON_JAVA_OPTS、spark.driver.extraJavaOptions、spark.yarn.cluster.driver.extraJavaOptions 、spark.executor.extraJavaOptions    中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Spark。3) 在对应实例后台查看进程 ps -ef|grep jdbcserver,查看参数已生效。4) 修改spark客户端目录Spark/spark/conf/spark-default.conf,在spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】Presto1) 停止Presto服务2) 在所有Presto实例安装节点执行命令删除log4j-core包中的jndilookup类su - ommzip -q -d /opt/Bigdata/FusionInsight_Presto_8.1.0.1/install/FusionInsight-Presto-333/presto/plugin/elasticsearch/log4j-core-2.9.1.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3) 重启Presto。Impala1) 登录Impala各实例安装节点,修改脚本/opt/Bigdata/FusionInsight_Impala_8.1.0.1/install/FusionInsight-Impala-3.4.0/impala/sbin/impala-env.sh,在变量JAVA_TOOL_OPTIONS末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】,保存后重启Impala服务
  • [运维宝典] MRS 2.1.1版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件LoaderHiveStormPrestoImpalaTezHadoopManager(Tomcat) 三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目xml文件确认jar包版本是否在2.0-2.14.1版本之间。Linux:切换到项目目录下,运行命令并查看输出是否含有两个关键jar包,并通过jar包文件名和项目xml文件确认jar包版本是否在2.0-2.14.1版本之间:如下分别是执行的两个不同命令以及截图find . / | grep log4j-api搜索结果如下,以下搜索结果除Storm外必须使用如下命令find . / | grep log4j-core将log4j-core-2.8.2.jar,log4j-core-2.9.1.jar,log4j-api-2.9.1.jar和log4j-api-2.8.2.jar的软链接替换为log4j-core-2.10.0.jar和log4j-api-2.10.0.jar。具体执行如下步骤:登录集群所有节点,使用omm用户执行以下命令:find . / | grep log4j-api 查找出相应的jar包和路径替换软连接,备份 log4j-api 包su - ommcd /opt/Bigdata/om-0.0.1/share/om/controller/lib/ ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-api-2.8.2.jar /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/ ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/log4j-api-2.9.1.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/log4j-api-2.9.1.jar-bakcd /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/cp /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.10.0.jarmv /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.8.2.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-api-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/ ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-api-2.8.2.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-api-2.8.2.jar-bak cd /opt/client/Impala/impala/dependency/ ln -s /opt/share/log4j-api-2.10.0/log4j-api-2.10.0.jar log4j-api-2.10.0.jarmv /opt/client/Impala/impala/dependency/log4j-api-2.8.2.jar /opt/client/Impala/impala/dependency/log4j-api-2.8.2.jar-bakfind . / | grep log4j-core查找出相应的jar包和路径替换软连接,备份 log4j-core 包cd /opt/Bigdata/om-0.0.1/share/om/controller/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-core-2.8.2.jar /opt/Bigdata/om-0.0.1/share/om/controller/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/ cp /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.10.0.jarmv /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar /opt/Bigdata/apache-tomcat-7.0.78/webapps/web/WEB-INF/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/log4j-core-2.9.1.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Presto-316/presto/plugin/presto-elasticsearch/log4j-core-2.9.1.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/lib/log4j-core-2.8.2.jar-bakcd /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/ ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-core-2.8.2.jar /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/dependency/log4j-core-2.8.2.jar-bakcd /opt/client/Impala/impala/dependency/ln -s /opt/share/log4j-core-2.10.0/log4j-core-2.10.0.jar log4j-core-2.10.0.jarmv /opt/client/Impala/impala/dependency/log4j-core-2.8.2.jar /opt/client/Impala/impala/dependency/log4j-core-2.8.2.jar-bakStorm服务应该使用此命令:zip -q -d /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Storm-1.2.1/storm/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class            处理,目的是删除JndiLookup.class这个影响的类。(如过想验证是否删除了此类,执行命令后去对应路径查找log4j-core-2.8.2.jar,下载到本地解压后会找不到此类说明执行成功。)四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。五、MRS集群侧组件修复指引1. 修改MRS Manager Tomcat1)登录MRS集群主,备oms节点,执行以下命令: vi /opt/Bigdata/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出注意:查找此参数时,需要用命令“:set number”打开行显示找出相应位置(后续为了方便查找,建议都打开行显示)2)在MRS主节点上查询tomcat进程ps -ef | grep apache-tomcat切换成omm用户su - ommsh /opt/Bigdata/tomcat/bin/shutdown.shsh /opt/Bigdata/tomcat/bin/startup.sh3)重新拉起后ps -ef | grep tomcat | grep NoLook查看如下图所示修改完成2. 修改MRS Controller1)登录MRS集群主,备oms节点,执行以下命令:vi /opt/Bigdata/om-0.0.1/sbin/controller.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出2)在MRS主节点上切换成omm用户,重启controllersu - ommsh /opt/Bigdata/om-0.0.1/sbin/restart-controller.sh3)等待3~5分钟重新拉起后ps -ef | grep ControllerService | grep NoLook查看如下图所示修改完成3. 修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。修改配置后尽量使用滚动重启,以减少对业务的影响。 Loader1)在Manager页面Loader组件全部配置中,搜索OPTS配置,在LOADER_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Loader。3) 在对应实例后台查看进程 ps -ef | grep Loader| grep NoLook,查看参数已生效。Hive1)在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加    -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启Hive。3) 在对应实例后台查看进程 ps -ef | grep HiveService | grep NoLook,查看参数已生效。Impala1) 登录Impala各实例安装节点,修改脚本/opt/Bigdata/MRS_2.1.1/install/FusionInsight-Impala-3.2.0/impala/sbin/impala-env.sh,在impala-env.sh末尾追加新一行参数export JAVA_TOOL_OPTIONS="-Dlog4j2.formatMsgNoLookups=true ${JAVA_TOOL_OPTIONS}"2) 保存后重启Impala服务 Presto1) 在Manager页面Presto组件全部配置中,搜索OPTS配置,在Presto->Coordinator和Presto->Worker中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启(可能不支持滚动重启,则重启即可)。3) 在对应实例后台查看进程ps -ef | grep Presto | grep NoLook,查看参数已生效。 Tez1)在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启(可能不支持滚动重启,则重启即可)Tez3) 在对应实例后台查看进程ps -ef | grep tez | grep NoLook查看参数已生效 Hadoop1)在Manager页面HDFS和MapReduce组件全部配置中,搜索OPTS配置,在HDFS->NameNode、HDFS->Zkfc、HDFS->DataNode、HDFS->JournalNode、Mapreduce->JobHistoryServer中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,滚动重启HDFS和MapReduce。3) 在对应实例后台查看进程,查看参数已生效。 
  • [其他] MRS 3.1.0版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件• Hive• Flink• Spark• Manager(Tomcat)• Tez• Impala• Ranger• Presto• Oozie三、应用侧(客户端侧)排查指引排查主要以检测Java应用是否包含log4j-api.jar和log4j-core.jar为主,具体措施如下:• Windows:在项目目录中搜索关键字“log4j”,查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。• Linux:切换到项目目录下,运行命令 find . -name ‘log4j*.jar’并查看输出是否含有两个关键jar包,并通过jar包文件名和项目pom.xml文件确认jar包版本是否在2.0-2.14.1版本之间。四、应用侧(客户端侧)修补指引应急缓解措施:在 JVM 参数中添加 -Dlog4j2.formatMsgNoLookups=true 或者在 log4j 的配置中设置 log4j2.formatMsgNoLookups=True 然后重启应用。重启应用会影响业务,请评估影响后执行。五、MRS集群侧组件修复指引修改MRS Manager Tomcat1) 登录MRS集群主备master节点,主备节点ip可在 “主机管理”页面获取,主机列表中标记记“★”的节点为主master节点,标记“☆”的节点为备master节点。2)执行以下命令:vi /opt/Bigdata/om-server/tomcat/bin/catalina.sh在如下图所示处,添加-Dlog4j2.formatMsgNoLookups=true【注意参数两边空格】, 保存并退出3)对主master节点执行以下命令,切换到omm用户并重启tomcatsu - ommsh /opt/Bigdata/om-server/tomcat/bin/shutdown.shsh /opt/Bigdata/om-server/tomcat/bin/startup.sh4)自动重新拉起后ps -ef | grep apache-tomcat查看如下图所示修改完成修改其他大数据组件参照第二节涉及组件范围,对当前集群已安装的组件依次进行配置修改。配置或文件修改需重启后生效,重启过程会影响业务运行,请评估影响后执行。请尽量使用滚动重启,以减少对业务的影响,各涉及组件操作方法如下Hive1) 在Manager页面Hive组件全部配置中,搜索OPTS配置,在HIVE_GC_OPTS、METASTORE_GC_OPTS和WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Hive。3) 在对应实例后台查看进程 ps -ef|grep HiveService,查看参数已生效。Tez1) 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Tez。3) 在对应实例后台查看进程 ps -ef|grep tez,查看参数已生效。Oozie1) 在Manager页面Oozie组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Oozie。3) 在对应实例后台查看进程 ps -ef|grep oozie,查看参数已生效。Ranger1) 在Manager页面Ranger组件全部配置中,搜索GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Ranger。3) 在对应实例后台查看进程 ps -ef|grep ranger,查看参数已生效。Flink1) 在Manager页面Flink组件全部配置中,搜索FLINK_SERVER_GC_OPTS配置,在所有角色的GC_OPTS配置项内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Flink。3) 在对应实例后台查看进程 ps -ef|grep flink,查看参数已生效。4) 修改Flink客户端安装目录下的Flink/flink/conf/flink-conf.yaml中的env.java.opts,在配置末尾追加-Dlog4j2.formatMsgNoLookups=trueSpark1) 在Manager页面Spark组件全部配置中,搜索GC配置,在SPARK_DAEMON_JAVA_OPTS、spark.driver.extraJavaOptions、spark.yarn.cluster.driver.extraJavaOptions 、spark.executor.extraJavaOptions    中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】2) 点击保存配置,重启Spark。3) 在对应实例后台查看进程 ps -ef|grep jdbcserver,查看参数已生效。4) 修改spark客户端目录Spark/spark/conf/spark-default.conf,在spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】Presto1) 停止Presto服务2) 在所有Presto实例安装节点执行命令删除log4j-core包中的jndilookup类su - ommzip -q -d /opt/Bigdata/FusionInsight_Presto_8.1.0.1/install/FusionInsight-Presto-333/presto/plugin/elasticsearch/log4j-core-2.9.1.jar org/apache/logging/log4j/core/lookup/JndiLookup.class3) 重启Presto。Impala1) 登录Impala各实例安装节点,修改脚本/opt/Bigdata/FusionInsight_Impala_8.1.0.1/install/FusionInsight-Impala-3.4.0/impala/sbin/impala-env.sh,在变量JAVA_TOOL_OPTIONS末尾追加-Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】,保存后重启Impala服务
  • [运维宝典] MRS 1.9.0版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件HiveLoaderFlinkSparkManager(Tomcat)三、MRS集群侧组件修复指引1. 主备节点文件修复1)登录MRS集群主备节点2)在主备节点上分别按照如下步骤进行文件修复         a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;3)MRS Manager Tomcat重启生效登录MRS集群主节点查询tomcat进程ps -ef | grep apache-tomcat kill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep apache-tomcat4) MRS Controller重启生效登录MRS集群主节点查询controller进程ps -ef | grep ControllerServicekill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep ControllerService5) MRS executor重启生效登录MRS集群主节点查询executor进程ps -ef | grep executorkill掉进程  kill -9 xxxx,等待自动拉起查询tomcat进程是否被拉起 ps -ef | grep executor 2. 大数据组件修复参照第二节涉及组件范围,对当前集群已安装的组件依次进行修复。修复文件后尽量使用滚动重启,以减少对业务的影响,下面以Hive组件为例,其他组件操作方法类似。     1) 集群节点文件修复到主机管理找到集群节点,登陆所有集群节点        a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件完成以后到manager重启各组件服务(除TEZ)     2) 组件服务修复重启生效登录Manager进入服务管理页面,选中所有实例,选择滚动重启。其他服务参考Hive操作进行重启即可
  • [运维宝典] MRS 1.9.3版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件HiveLoaderFlinkSparkManager(Tomcat)Tez三、MRS集群侧组件修复指引1. 主备节点文件修复1)登录MRS集群主备节点2)在主备节点上分别按照如下步骤进行文件修复         a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \; 3)MRS Manager Tomcat重启生效登录MRS集群主节点查询tomcat进程ps -ef | grep apache-tomcatkill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep apache-tomcat4) MRS Controller重启生效登录MRS集群主节点查询controller进程ps -ef | grep ControllerServicekill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep ControllerService5) MRS executor重启生效登录MRS集群主节点查询executor进程ps -ef | grep executorkill掉进程  kill -9 xxxx,等待自动拉起查询tomcat进程是否被拉起 ps -ef | grep executor 2. 大数据组件修复参照第二节涉及组件范围,对当前集群已安装的组件依次进行修复。修复文件后尽量使用滚动重启,以减少对业务的影响,下面以Hive组件为例,其他组件操作方法类似。     1) 集群节点文件修复到主机管理找到集群节点,登陆所有集群节点        a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件完成以后到manager重启各组件服务(除TEZ)     2) 组件服务修复重启生效        a. 登录Manager进入Hive服务管理页面,选中所有实例,选择滚动重启。        其他服务参考Hive操作进行重启即可(除Tez和Hive的WebHcat实例外)        b. Tez服务更新服务配置修复重启生效            i. 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】            ii. 点击保存配置,滚动重启Tez。            iii. 在对应实例后台查看进程 ps -ef|grep tez|grep formatMasNoLookups  ,查看参数已生效。       c. Hive WebHcat实例修复          i. 从华为maven镜像库https://mirrors.huaweicloud.com/repository/maven/ 中下载如下jar包https://mirrors.huaweicloud.com/artifactory/maven-public/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jarhttps://mirrors.huaweicloud.com/artifactory/maven-public/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0.jarhttps://mirrors.huaweicloud.com/artifactory/maven-public/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0.jarhttps://mirrors.huaweicloud.com/artifactory/maven-public/org/apache/logging/log4j/log4j-web/2.10.0/log4j-web-2.10.0.jarhttps://mirrors.huaweicloud.com/artifactory/maven-public/org/apache/logging/log4j/log4j-1.2-api/2.10.0/log4j-1.2-api-2.10.0.jarhttps://mirrors.huaweicloud.com/artifactory/maven-public/com/lmax/disruptor/3.3.6/disruptor-3.3.6.jar登录webhcat所在节点su - ommcd /opt/Bigdata/MRS_1.9.3/install/FusionInsight-Hive-2.3.3/hive/lib/ mv log4j-api-2.6.2.jar log4j-api-2.6.2.jar_bakmv log4j-1.2-api-2.6.2.jar log4j-1.2-api-2.6.2.jar_bakmv log4j-slf4j-impl-2.6.2.jar log4j-slf4j-impl-2.6.2.jar_bakmv log4j-web-2.6.2.jar log4j-web-2.6.2.jar_bakmv disruptor-3.3.0.jar disruptor-3.3.0.jar_bak执行命令修改文件权限chmod 777 log4j-core-2.10.0.jarchown omm:wheel log4j-core-2.10.0.jarchmod 777 log4j-api-2.10.0.jarchown omm:wheel log4j-api-2.10.0.jarchmod 777 log4j-1.2-api-2.10.0.jarchown omm:wheel log4j-1.2-api-2.10.0.jarchmod 777 log4j-slf4j-impl-2.10.0.jarchown omm:wheel log4j-slf4j-impl-2.10.0.jarchmod 777 log4j-web-2.10.0.jarchown omm:wheel log4j-web-2.10.0.jarchmod 777 disruptor-3.3.6.jarchown omm:wheel disruptor-3.3.6.jari. 在Manager页面Hive组件WEBHCAT角色服务配置中,搜索OPTS配置,在WEBHCAT_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】点击保存配置,滚动重启webHCat。在对应实例后台查看进程 ps -ef|grep webhcat,查看参数已生效。
  • [运维宝典] MRS 1.9.2版本Log4j2远程执行漏洞(CVE-2021-44228)缓解措施
    MRS 服务关于Apache log4j远程代码执行漏洞排查及紧急修复声明一、漏洞情况简介Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。该漏洞影响范围广,漏洞危害大,请尽快采取安全措施,阻止漏洞攻击事件的发生。二、MRS服务受影响的大数据组件HiveLoaderFlinkSparkManager(Tomcat)TezImpala三、MRS集群侧组件修复指引1. 主备节点文件修复1)登录MRS集群主备节点2)在主备节点上分别按照如下步骤进行文件修复         a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \; 3)MRS Manager Tomcat重启生效登录MRS集群主节点查询tomcat进程ps -ef | grep apache-tomcatkill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep apache-tomcat4) MRS Controller重启生效登录MRS集群主节点查询controller进程ps -ef | grep ControllerServicekill掉进程  kill -9 xxxx,等待自动拉起【启动期间Manager页面无法访问1-3分钟】查询tomcat进程是否被拉起 ps -ef | grep ControllerService5) MRS executor重启生效登录MRS集群主节点查询executor进程ps -ef | grep executorkill掉进程  kill -9 xxxx,等待自动拉起查询tomcat进程是否被拉起 ps -ef | grep executor 2. 大数据组件修复参照第二节涉及组件范围,对当前集群已安装的组件依次进行修复。修复文件后尽量使用滚动重启,以减少对业务的影响,下面以Hive组件为例,其他组件操作方法类似。     1) 集群节点文件修复到主机管理找到集群节点,登陆所有集群节点        a. 执行如下命令进行修复前状态检查:su - ommfind /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;对应版本的jar包中是否存在引发问题class文件执行备份操作find /opt -name "log4j-core-2.8.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.8.2.jar_bak; donefind /opt -name "log4j-core-2.6.2.jar" | while read name;do newname=$(dirname $name) ;cp $name $newname/log4j-core-2.6.2.jar_bak; done查看是否备份成功find /opt -name log4j-core*.jar_bak -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;        b. 执行如下命令进行问题文件修复find /opt -name log4j-core-2.8.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;find /opt -name log4j-core-2.6.2.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;出现如图报错无影响,只是表示对应目录的文件不存在异常问题文件           c. 执行如下命令进行修复后文件检查:find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件。若出现异常需要进行如下回滚操作 find /opt -name "log4j-core-2.8.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.8.2.jar; done find /opt -name "log4j-core-2.6.2.jar_bak" | while read name;do newname=$(dirname $name) ;mv $name $newname/log4j-core-2.6.2.jar; done执行如下命令检查是否回滚成功find /opt -name log4j-core*.jar -exec grep -Rn org/apache/logging/log4j/core/lookup/JndiLookup.class {} \;所有log4j-core-2.8.2.jar和log4j-core-2.6.2.jar中已不存在问题文件完成以后到manager重启各组件服务(除TEZ)     2) 组件服务修复重启生效        a. 登录Manager进入Hive服务管理页面,选中所有实例,选择滚动重启。        其他服务参考Hive操作进行重启即可(除Tez外)        b. Tez服务更新服务配置修复重启生效            i. 在Manager页面Tez组件全部配置中,搜索OPTS配置,在TEZUI_GC_OPTS中内容末尾添加 -Dlog4j2.formatMsgNoLookups=true【注意与前参数有空格】            ii. 点击保存配置,滚动重启Tez。            iii. 在对应实例后台查看进程 ps –ef|grep tez,查看参数已生效。
  • [基础组件] 【MRS 3.1.1-LTS】【Clickhouse】赋予用户clickhouse角色后,仁无权限进行建库、建表操作
    【功能模块】MRS Clickhouse组件(安全模式)【操作步骤&问题现象】1、kinit认证后执行:clickhouse client --host 192.168.100.41 --port 9440 --secure连接到clickhouse2、创建数据库:create database test001;3、报错提示:Code: 497. DB::Exception: Received from 192.168.100.41:9440. DB::Exception: wx657508: Not enough privileges. To execute this query it's necessary to have grant CREATE DATABASE ON test001.*.【截图信息
  • [干货汇总] 【大数据系列】基于MRS-Hudi构建数据湖的典型应用场景介绍
    >摘要:华为云FunsionInsight MRS已集成Apache Hudi 0.8版本,基于MRS-Hudi构建数据湖解决方案。本文分享自华为云社区[《基于MRS-Hudi构建数据湖的典型应用场景介绍》](https://bbs.huaweicloud.com/blogs/290866?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=ei&utm_content=content),作者:受春柏。 # 一、传统数据湖存在的问题与挑战 传统数据湖解决方案中,常用Hive来构建T+1级别的数据仓库,通过HDFS存储实现海量数据的存储与水平扩容,通过Hive实现元数据的管理以及数据操作的SQL化。虽然能够在海量批处理场景中取得不错的效果,但依然存在如下现状问题: #### 问题一:不支持事务 由于传统大数据方案不支持事务,有可能会读到未写完成的数据,造成数据统计错误。为了规避该问题,通常控制读写任务顺序调用,在保证写任务完成后才能启动读任务。但并不是所有读任务都能够被调度系统约束住,在读取时仍存在该问题。 #### 问题二:数据更新效率低 业务系统库的数据,除流水表类的数据都是新增数据外,还有很多状态类数据表需要更新操作(例如:账户余额表,客户状态表,设备状态表等),而传统大数据方案无法满足增量更新,常采用拉链方式,先进行join操作再进行insert overwrite操作,通过覆盖写的方式完成更新操作,该操作往往需要T+1的批处理模式 ,从而导致端到端数据时延T+1,存在效率低、成本高等问题。 #### 问题三:无法及时应对业务表变化 上游业务系统对数据schema发生变更后,会导致数据无法入湖,需要数据湖的表schema进行同步调整。从技术实现上采用数据表重建的方式来满足该场景,导致数据湖的数据表的管理与维护方案复杂,实现成本高。另外该种场景通常需要业务部门与数据团队相配合,通过管理流程来实现表结构的同步。 #### 问题四:历史快照表数据冗余 传统数据湖方案需要对历史的快照表进行存储,采用全量历史存储的方式实现,例如:天级历史快照表,每天都会全量存储全表数据。这样就造成了大量的数据存储冗余,占用大量的存储资源。 #### 问题五:小批量增量数据处理成本高 传统数据湖为了实现增量ETL,通常将增量数据按照分区的方式进行存储,若为了实现T+0的数据处理,增量数据需要按照小时级或者分钟级的分区粒度。该种实现形式会导致小文件问题,大量分区也会导致元数据服务压力增大。 基于以上问题,华为FunsionInsight MRS集成Apache Hudi组件,希望通过Hudi组件来改善传统数据湖存在的问题。 # 二、MRS云原生数据湖Hudi的关键特性 Apache Hudi是数据湖的文件组织层,对Parquet等格式文件进行管理提供数据湖能力,支持多种计算引擎,提供IUD接口,在 HDFS/OBS的数据集上提供了插入更新和增量拉取的流原语,具有如下特点: 1.支持ACID - 支持SnapShot数据隔离,保证数据读取完整性,实现读写并发能力 - 数据commit,数据入湖秒级可见 2.快速Upsert能力 - 支持可插拔索引进制实现新增更新数据快速入湖 - 扩展Merge操作,实现新增、更新、删除混合数据同时入湖 - 支持写入同步小文件合并能力,写入数据自动按照预设文件大小进行文件合并 3.Schema Evolution - 支持湖内数据schema的同步演进 - 支持多种常见schema变更操作 4.多种视图读取接口 - 支持实时快照数据读取方式 - 支持历史快照数据读取方式 - 支持当前增量和历史增量数据读取方式 - 支持快速数据探索分析 5.多版本 - 数据按照提交版本存储,保留历史操作记录,方便数据回溯 - 数据回退操作简单,速度快。 # 三、MRS-Hudi的典型应用场景 #### l 基于MRS-CDL组件实现数据实时入湖 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/10/100038pr2d4zqi9m9irash.png) **场景说明:** - 可以从业务数据库中直接抽取数据 - 数据入湖需要高实时性,秒级延迟 - 数据表变更需要与数据湖表结构实时同步 **方案介绍:** 该方案基于MRS-CDL组件构建,由CDL组件实现业务库的操作事件捕获并写入的基于MRS-Hudi的数据湖存储。 MRS-CDL是FusionInsight MRS推出的一种数据实时同步服务,旨在将传统OLTP数据库中的事件信息捕捉并实时推送到数据湖中去。该方案有以下特性支持: - MRS-CDL支持捕获业务系统库的DDL和DML事件。 - 支持将MRS-Hudi作为数据目标端。 - 可视化操作,采集任务、入湖任务以及任务管理都是可视化操作。 - 入湖任务支持多租户,保证数据权限与湖内权限保持一致。 - 全程任务开发零代码,节省开发成本。 **方案收益:** - 入湖操作简单,全程零代码开发。 - 入湖时效快,从业务系统数据调整到入湖,可在分钟内完成。 **l 基于Flink SQL入湖** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/10/100258jnuel0vvmp935a6n.png) **场景说明:** - 无需直接对接数据库,数据由已有采集工具发送到Kafka或者由业务系统直接发送到Kafka。 - 不需要实时同步DDL操作事件。 **方案说明:** MRS的FlinkSQL入湖链路是基于Flink+Hudi成的。MRS-Flink以下特性支持该方案: - 增加了Flink引擎与Hudi的对接能力。支持了对Hudi中COW表以及MOR表的读写操作。 - FlinkServer(Flink开发平台)增加了对Hudi的流量表支持。 - 作业开发与作业维护可视化操作。 **方案收益:** - **入湖代码开发简单。** 通过FlinkSQL实现入湖的语句如下: Insert into table_hudi select * from table_kafka; - **入湖时效快,最快可达秒级数据入湖。** **l 湖内数据快速ETL** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/10/100419aefrfqkhedfxyz9q.png) **场景说明:** 湖内数据通常会采用数仓分层存储,例如:贴源层(SDI)、汇总层(DWS)、集市层(DW),各家企业也会有不同的分层标准。数据在各层直接流转也会有相应的规范。传统数据湖通常采用天级全量数据ETL处理以实现各层之间数据流转。 现在Hudi支持ACID特性、Upsert特性和增量数据查询特性,可以实现增量的ETL,在不同层之间快速的流转。 增量ETL作业与传统ETL作业业务逻辑完全一样,涉及到的增量表读取采用commit_time来获取增量数据,在作业逻辑中的多表关联可以使Hudi表与Hudi表关联,也可以是Hudi表与存量Hive表的关联。 ETL作业开发可以基于SparkSQL、FlinkSQL开发。基于增量视图的ETL语句样例如下:Upsert table_dws select * from table_SDI where commit_time > “2021-07-07 12:12:12”。 由于采用了增量ETL方式,每次所处理的数据量也会下降,具体下降多少有赖于业务实际流量情况和增量的周期粒度。例如:物联网的业务数据,全天24小时流量稳定,采用10分钟级别的增量ETL,那么所处理的数量将全天数据量的1/(24*60/10)。因此在处理数据量大幅下降情况下,所需的计算资源也有相应的下降。 **方案收益:** - 单个ETL作业处理时延降低,端到端时间缩短。 - 消耗资源下降,单位ETL作业所处理数据量大幅下降,所需计算资源也会相应下降。 - 原有湖内存储的模型无需调整。 **l 支持交互式分析场景** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/10/100509sth1byh5f6lmh5uv.png) **场景说明:** 数据湖存储的数据具有数据种类全、维度多、历史周期长的特点,业务所需数据在数据湖中基本都是存在的,因此直接交互式分析引擎直接对接数据湖可以满足业务各类需求数据需求。 在数据探索、BI分析、报表展示等业务场景需要具备针对海量数据查询秒级返回的能力,同时要求分析接口简单SQL化。 **方案说明:** 在该场景中可以采用MRS-HetuEngine来实现该方案,MRS-HetuEngine是分布式高性能的交互式分析引擎,主要用于数据的快速实时查询场景。MRS-HetuEngine具备以下特性可以很好的支撑该场景: - MRS-HetuEngine引擎已经完成与MRS-Hudi的对接,能够快速读取Hudi存储的数据。 - 支持读取快照查询,查询当前最新快照数据和历史快照数据。 - 支持增量查询,根据commit_time,查询任一时间段内的增量数据。 - 针对MOR存储模型,尤其在数据探索场景可以通过读优化查询接口,快速分析MOR模型的Hudi表数据。 - 支持多源异构协同,具备跨Hudi与其他DB的联合分析能力,例如:维度数据存在TP库中,可以实现数据湖的事实表与TP维度表的关联分析。 - 查询语句SQL化,支持JDBC接口。 **方案收益:** - 结合MRS-CDL数据入湖,业务系统库数据变更可在分钟内实现在数据湖内可见。 - 对TB级到PB的数据量的交互式查询可达到秒级结果返回。 - 可对湖内各层数据进行分析。 **l 基于Hudi构建批流一体** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/10/100557swfun331y7myyaeo.png) **场景说明:** 传统处理架构中采用Lambda或者Kappa架构。Lambda使用比较灵活,也可以解决业务场景,但是在该架构中需要两套系统来完成,维护比较复杂。数据分流以后也很难再关联应用。例如:流处理场景使用批处理的结果。Kappa架构是为实时处理的架构,该架构缺少了批处理的能力。 **方案说明:** 在很多实时场景中,对时延要求可以是分钟级的,这样可以通过MRS-Hudi和实时计算引擎Flink和Spark-Streaming进行增量计算实现数据的快速处理,端到端实现分钟级延迟。另外MRS-Hudi本身就是湖存储,可以存储海量数据,因此也可以支持批量计算,常用的批处理引擎可以采用Hive和Spark。 **方案价值:** - 数据统一存储,实时数据与批量数据共用相同的存储。 - 同时支持实时计算与批量计算。相同业务逻辑的处理结果复用。 - 满足分钟级延时的实时处理能力和海量的批量处理。 # 四、总结 传统大数据由于不支持事务等痛点问题,造成T+1时延,虽然能够基于Flink流式计算实现少量数据在简单场景的秒级数据处理能力,但依然缺乏海量复杂场景的实时更新、事务支持能力。现在基于华为云FusionInsight MRS的Hudi可以构建分钟级数据处理方案,实现较大数据量的复杂计算实时处理能力,大大提升数据时效性,让数据价值近在眼前。