• [技术干货] 聊聊springboot项目引用第三平台私有jar踩到的坑【转】
    最近和朋友闲聊,他说他遇到一个问题,他引用了第三方公司私有API包,他在本地项目启动没问题,打包运行却找不到这个API包,于是我就问他怎么引用这个jar。他工程项目第三jar存放的位置类似如下在pom做如下引用<dependency> <groupId>org.example</groupId> <artifactId>demo-api</artifactId> <version>1.0-SNAPSHOT</version> <scope>system</scope> <systemPath>${project.basedir}/lib/demo-api.jar</systemPath>  </dependency>pom打包插件用springboot自带的插件<build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <executions>                     <execution>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>看到这个插件,大概就知道问题所在了,springboot默认的打包插件是不会把systemscope的jar打进springboot项目的BOOT-INF/lib/。注: springboot项目默认会引用BOOT-INF/lib/里面的jar于是我就跟朋友说,不要用systemscope了,直接搭建maven私仓,然后把第三方jar上传到私仓中,pom做如下引用<dependency>             <groupId>org.example</groupId>             <artifactId>demo-api</artifactId>             <version>1.0-SNAPSHOT</version>         </dependency>朋友给回复是公司没有私仓,我一脸懵逼,我就问他应该不至于吧,再次确认,得到他同样的回复后。后边就提供了下边的几种方案,让他参考选择springboot如何引用没有发布到私仓的第三jar整体思路:因为springboot提供的打包插件,默认是会把位于BOOT-INF/lib/里面的jar编译成class文件然后供项目引用。因此我们只需确保BOOT-INF/lib/里面含有我们要引用的第三方jar即可方案一:pom指定jar范围为system+springboot插件加入includeSystemScope标签的属性为true示例:<dependency>             <groupId>org.example</groupId>             <artifactId>demo-api</artifactId>             <version>1.0-SNAPSHOT</version>             <scope>system</scope>             <systemPath>${project.basedir}/lib/demo-api.jar</systemPath>         </dependency><build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <configuration>                     <includeSystemScope>true</includeSystemScope>                 </configuration>                 <executions>                     <execution>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>方案二:pom指定jar范围为system+resources标签引入要包含的jar<dependency>             <groupId>org.example</groupId>             <artifactId>demo-api</artifactId>             <version>1.0-SNAPSHOT</version>             <scope>system</scope>             <systemPath>${project.basedir}/lib/demo-api.jar</systemPath>         </dependency><build>         <resources>             <resource>                 <directory>${project.basedir}/lib</directory>                 <targetPath>BOOT-INF/lib/</targetPath>                 <includes>                     <include>**/*.jar</include>                 </includes>             </resource>         </resources>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <executions>                     <execution>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>方案三:直接将第三方jar打进要发布的本地仓库上图是maven官方的仓库流程图,其实对maven比较熟悉的朋友应该会知道,maven会先从本地仓库找jar,本地仓库找不到jar,就会再从私仓(如果有搭建私仓)里面找,私仓没有再从中央仓库找,然后找到的jar再存放到本地仓库。因此我们执行如下命令就可以将第三方jar直接打进本地仓库mvn install:install-file -DgroupId=org.example -DartifactId=demo-api -Dversion=1.0-SNAPSHOT -Dfile=F:\boot-thirdparty\lib\demo-api.jar -Dpackaging=jar项目的pom直接像如下引入第三方jar即可<dependency>             <groupId>org.example</groupId>             <artifactId>demo-api</artifactId>             <version>1.0-SNAPSHOT</version>         </dependency>方案四:搭建maven私仓,将第三方jar上传到maven私仓注: 搭建私仓不在本文论述范围,就讲下如何将第三方jar上传到私仓a、 先在maven的settings.xml的servers标签配置如下内容<server>     <id>nexus</id>     <username>admin</username>     <password>admin123</password>   </server>b、 执行发布命令行,如下mvn deploy:deploy-file -DgroupId=org.example -DartifactId=demo-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=F:\boot-thirdparty\lib\demo-api.jar -Durl=你的私仓地址 -DrepositoryId=和settings.xml配置server标签id一致,如上的nexus或者也可以利用maven私仓自带的可视化界面进行上传总结上面几种方案,个人是比较倾向方案三和方案四,因为本来就是用maven来管理jar了,在项目中还要额外把jar引进来,然后再修改插件,看着就感觉有点变扭转载自https://www.studyjava.cn/post/1961
  • [区域初赛赛题问题] Java程序在线编译异常
    程序文件在windows上可以正常编译和运行,但是在线训练时显示编译异常,排除了以下可能性:1、JDK版本不正确(JDK版本为1.8,)2、未引入第三方库3、头文件异常(将本程序的头文件放到官方给的demo里可以成功提交)4、目录结构不正确(将源代码复制到官方demo并打包)5、文件夹内有其余文件请各位大佬指导下,谢谢!
  • [其他问题] 【数仓GaussDB(DWS)】【bytea类型】使用postgresql.jar驱动包解析出错
    【功能模块】数据库中 bytea类型字段【操作步骤&问题现象】1、使用postgresql.jar驱动包解析出错2. 请问是否有提供专属驱动包可以解决这个问题【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [最佳实践] 使用Spark Jar作业读取和查询OBS数据
    操作场景DLI完全兼容开源的Apache Spark,支持用户开发应用程序代码来进行作业数据的导入、查询以及分析处理。本示例从编写Spark程序代码读取和查询OBS数据、编译打包到提交Spark Jar作业等完整的操作步骤说明来帮助您在DLI上进行作业开发。环境准备在进行Spark Jar作业开发前,请准备以下开发环境。表1 Spark Jar作业开发环境准备项说明操作系统Windows系统,支持Windows7以上版本。安装JDKJDK使用1.8版本。安装和配置IntelliJ IDEAIntelliJ IDEA为进行应用开发的工具,版本要求使用2019.1或其他兼容版本。安装Maven开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。开发流程DLI进行Spark Jar作业开发流程参考如下:图1 Spark Jar作业开发流程表2 开发流程说明序号阶段操作界面说明1创建DLI通用队列DLI控制台创建作业运行的DLI队列。2上传数据到OBS桶OBS控制台将测试数据上传到OBS桶下。3新建Maven工程,配置pom文件IntelliJ IDEA参考样例代码说明,编写程序代码读取OBS数据。4编写程序代码5调试,编译代码并导出Jar包6上传Jar包到OBS和DLIOBS控制台将生成的Spark Jar包文件上传到OBS目录下和DLI程序包中。7创建Spark Jar作业DLI控制台在DLI控制台创建Spark Jar作业并提交运行作业。8查看作业运行结果DLI控制台查看作业运行状态和作业运行日志。步骤1:创建DLI通用队列第一次提交Spark作业,需要先创建队列,例如创建名为“sparktest”的队列,队列类型选择为“通用队列”。在DLI管理控制台的左侧导航栏中,选择“队列管理”。单击“队列管理”页面右上角“购买队列”进行创建队列。创建名为“sparktest”的队列,队列类型选择为“通用队列”。创建队列详细介绍请参考创建队列。单击“立即购买”,确认配置。配置确认无误,单击“提交”完成队列创建。步骤2:上传数据到OBS桶根据如下数据,创建people.json文件。{"name":"Michael"} {"name":"Andy", "age":30} {"name":"Justin", "age":19}进入OBS管理控制台,在“桶列表”下,单击已创建的OBS桶名称,本示例桶名为“dli-test-obs01”,进入“概览”页面。单击左侧列表中的“对象”,选择“上传对象”,将people.json文件上传到OBS桶根目录下。在OBS桶根目录下,单击“新建文件夹”,创建名为“result”的文件夹。单击“result”的文件夹,在“result”下单击“新建文件夹”,创建名为“parquet”的文件夹。步骤3:新建Maven工程,配置pom依赖以下通过IntelliJ IDEA 2020.2工具操作演示。打开IntelliJ IDEA,选择“File > New > Project”。图2 新建Project选择Maven,Project SDK选择1.8,单击“Next”。定义样例工程名和配置样例工程存储路径,单击“Finish”完成工程创建。如上图所示,本示例创建Maven工程名为:SparkJarObs,Maven工程路径为:“D:\DLITest\SparkJarObs”。在pom.xml文件中添加如下配置。<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.3.2</version> </dependency> </dependencies>图3 修改pom.xml文件在工程路径的“src > main > java”文件夹上鼠标右键,选择“New > Package”,新建Package和类文件。Package根据需要定义,本示例定义为:“com.huawei.dli.demo”,完成后回车。在包路径下新建Java Class文件,本示例定义为:SparkDemoObs。步骤4:编写代码编写SparkDemoObs程序读取OBS桶下的1的“people.json”文件,并创建和查询临时表“people”。完整的样例请参考完整样例代码参考,样例代码分段说明如下:导入依赖的包。import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import static org.apache.spark.sql.functions.col;通过当前帐号的AK和SK创建SparkSession会话spark 。SparkSession spark = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", "xxx") .config("spark.hadoop.fs.obs.secret.key", "yyy") .appName("java_spark_demo") .getOrCreate();"spark.hadoop.fs.obs.access.key"参数对应的值"xxx"需要替换为帐号的AK值。"spark.hadoop.fs.obs.secret.key"参数对应的值“yyy”需要替换为帐号的SK值。AK和SK值获取请参考:如何获取AK和SK。读取OBS桶中的“people.json”文件数据。其中“dli-test-obs01”为演示的OBS桶名,请根据实际的OBS桶名替换。Dataset<Row> df = spark.read().json("obs://dli-test-obs01/people.json"); df.printSchema();通过创建临时表“people”读取文件数据。df.createOrReplaceTempView("people");查询表“people”数据。Dataset<Row> sqlDF = spark.sql("SELECT * FROM people"); sqlDF.show();将表“people”数据以parquet格式输出到OBS桶的“result/parquet”目录下。sqlDF.write().mode(SaveMode.Overwrite).parquet("obs://dli-test-obs01/result/parquet"); spark.read().parquet("obs://dli-test-obs01/result/parquet").show();关闭SparkSession会话spark。spark.stop();步骤5:调试、编译代码并导出Jar包单击IntelliJ IDEA工具右侧的“Maven”,参考下图分别单击“clean”、“compile”对代码进行编译。编译成功后,单击“package”对代码进行打包。打包成功后,生成的Jar包会放到target目录下,以备后用。本示例将会生成到:“D:\DLITest\SparkJarObs\target”下名为“SparkJarObs-1.0-SNAPSHOT.jar”。步骤6:上传Jar包到OBS和DLI下登录OBS控制台,将生成的“SparkJarObs-1.0-SNAPSHOT.jar”Jar包文件上传到OBS路径下。将Jar包文件上传到DLI的程序包管理中,方便后续统一管理。登录DLI管理控制台,单击“数据管理 > 程序包管理”。在“程序包管理”页面,单击右上角的“创建”创建程序包。在“创建程序包”对话框,配置以下参数。包类型:选择“JAR”。OBS路径:程序包所在的OBS路径。分组设置和组名称根据情况选择设置,方便后续识别和管理程序包。单击“确定”,完成创建程序包。步骤7:创建Spark Jar作业登录DLI控制台,单击“作业管理 > Spark作业”。在“Spark作业”管理界面,单击“创建作业”。在作业创建界面,配置对应作业运行参数。具体说明如下:所属队列:选择已创建的DLI通用队列。例如当前选择步骤1:创建DLI通用队列创建的通用队列“sparktest”。作业名称(--name):自定义Spark Jar作业运行的名称。当前定义为:SparkTestObs。应用程序:选择步骤6:上传Jar包到OBS和DLI下中上传到DLI程序包。例如当前选择为:“SparkJarObs-1.0-SNAPSHOT.jar”。主类:格式为:程序包名+类名。例如当前为:com.huawei.dli.demo.SparkDemoObs。其他参数可暂不选择,想了解更多Spark Jar作业提交说明可以参考创建Spark作业。图4 创建Spark Jar作业单击“执行”,提交该Spark Jar作业。在Spark作业管理界面显示已提交的作业运行状态。步骤8:查看作业运行结果在Spark作业管理界面显示已提交的作业运行状态。初始状态显示为“启动中”。如果作业运行成功则作业状态显示为“已成功”,单击“操作”列“更多”下的“Driver日志”,显示当前作业运行的日志。图5 “Driver日志”中的作业执行日志如果作业运行成功,本示例进入OBS桶下的“result/parquet”目录,查看已生成预期的parquet文件。如果作业运行失败,单击“操作”列“更多”下的“Driver日志”,显示具体的报错日志信息,根据报错信息定位问题原因。例如,如下截图信息因为创建Spark Jar作业时主类名没有包含包路径,报找不到类名“SparkDemoObs”。可以在“操作”列,单击“编辑”,修改“主类”参数为正确的:com.huawei.dli.demo.SparkDemoObs,单击“执行”重新运行该作业即可。后续指引如果您想通过Spark Jar作业访问其他数据源,请参考《使用Spark作业跨源访问数据源》。如果您想通过Spark Jar作业在DLI创建数据库和表,请参考《使用Spark作业访问DLI元数据》。完整样例代码参考package com.huawei.dli.demo; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import static org.apache.spark.sql.functions.col; public class SparkDemoObs { public static void main(String[] args) { SparkSession spark = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", "xxx") .config("spark.hadoop.fs.obs.secret.key", "yyy") .appName("java_spark_demo") .getOrCreate(); // can also be used --conf to set the ak sk when submit the app // test json data: // {"name":"Michael"} // {"name":"Andy", "age":30} // {"name":"Justin", "age":19} Dataset<Row> df = spark.read().json("obs://dli-test-obs01/people.json"); df.printSchema(); // root // |-- age: long (nullable = true) // |-- name: string (nullable = true) // Displays the content of the DataFrame to stdout df.show(); // +----+-------+ // | age| name| // +----+-------+ // |null|Michael| // | 30| Andy| // | 19| Justin| // +----+-------+ // Select only the "name" column df.select("name").show(); // +-------+ // | name| // +-------+ // |Michael| // | Andy| // | Justin| // +-------+ // Select people older than 21 df.filter(col("age").gt(21)).show(); // +---+----+ // |age|name| // +---+----+ // | 30|Andy| // +---+----+ // Count people by age df.groupBy("age").count().show(); // +----+-----+ // | age|count| // +----+-----+ // | 19| 1| // |null| 1| // | 30| 1| // +----+-----+ // Register the DataFrame as a SQL temporary view df.createOrReplaceTempView("people"); Dataset<Row> sqlDF = spark.sql("SELECT * FROM people"); sqlDF.show(); // +----+-------+ // | age| name| // +----+-------+ // |null|Michael| // | 30| Andy| // | 19| Justin| // +----+-------+ sqlDF.write().mode(SaveMode.Overwrite).parquet("obs://dli-test-obs01/result/parquet"); spark.read().parquet("obs://dli-test-obs01/result/parquet").show(); spark.stop(); } }
  • [其他] MapReduce 使用hue提交自己的spark jar 包不能执行成功,
    【功能模块】【操作步骤&问题现象】1、请问有具体的配置操作吗?2、产品文档的介绍太粗糙了【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [应用安全] 【漏洞通告】Atlassian Confluence Server and Data Center远程代码执行漏洞
    漏洞名称:Atlassian Confluence Server and Data Center 远程代码执行漏洞组件名称:Atlassian Confluence Server and Data Center影响范围:Atlassian Confluence Server and Data Center < 7.4.177.5.0  ≤ Atlassian Confluence Server and Data Center < 7.13.77.14.0 ≤ Atlassian Confluence Server and Data Center < 7.14.37.15.0 ≤ Atlassian Confluence Server and Data Center < 7.15.27.16.0 ≤ Atlassian Confluence Server and Data Center < 7.16.47.17.0 ≤ Atlassian Confluence Server and Data Center < 7.17.47.18.0 ≤ Atlassian Confluence Server and Data Center < 7.18.1漏洞类型:远程代码执行利用条件:1、用户认证:不需要用户认证2、前置条件:默认配置3、触发方式:远程综合评价:<综合评定利用难度>:简单,不需要认证即可远程代码执行。<综合评定威胁等级>:严重,能造成远程代码执行。漏洞分析:1、组件介绍Atlassian Confluence Server and Data Center 是澳大利亚Atlassian 公司的一套专业的企业知识管理与协同软件,也可以用于构建企业 WiKi。该软件可实现团队成员之间的协作和知识共享。2、漏洞描述2022年6月4日,监测到一则 Atlassian Confluence Server and Data Center 组件存在远程代码执行漏洞的信息,漏洞编号:CVE-2022-26134,漏洞威胁等级:严重。该漏洞是由于数据处理不当,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 OGNL 表达式注入攻击,最终导致远程代码执行。影响范围:Atlassian Confluence Server and Data Center 用于团队成员之间的协作和知识共享,主要部署在内网,所以互联网上分布较少,主要集中在美国、德国和荷兰。目前受影响的 Atlassian Confluence Server and Data Center 版本:Atlassian Confluence Server and Data Center < 7.4.177.5.0  ≤ Atlassian Confluence Server and Data Center < 7.13.77.14.0 ≤ Atlassian Confluence Server and Data Center < 7.14.37.15.0 ≤ Atlassian Confluence Server and Data Center < 7.15.27.16.0 ≤ Atlassian Confluence Server and Data Center < 7.16.47.17.0 ≤ Atlassian Confluence Server and Data Center < 7.17.47.18.0 ≤ Atlassian Confluence Server and Data Center < 7.18.1解决方案:1、如何检测组件系统版本在主页最下方即可查看版本信息:2、官方修复建议当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:https://www.atlassian.com/software/confluence/download-archives3、临时修复建议该临时修复建议存在一定风险,建议用户可根据业务系统特性审慎选择采用临时修复方案:Atlassian Confluence 7.15.0 - 7.18.0 的用户:如果在集群内运行 Confluence 则需要在每个节点上重复以下过程:1.关闭 Confluence2.下载https://packages.atlassian.com/maven-internal/opensymphony/xwork/1.0.3-atlassian-10/xwork-1.0.3-atlassian-10.jar3.删除或者将 /confluence/WEB-INF/lib/xwork-1.0.3-atlassian-8.jar 移出 Confluence  安装目录注:不要在目录中留下旧的  JAR  文件4.将下载的 xwork-1.0.3-atlassian-10.jar 文件复制到 /confluence/WEB-INF/lib/ 目录中5.检查新的 xwork-1.0.3-atlassian-10.jar 文件权限是否和所在目录的其他文件权限一致。6.启动 ConfluenceConfluence 7.0.0 - Confluence 7.14.2 的用户:如果在集群内运行 Confluence 则需要在每个节点上重复以下过程:1.关闭 Confluence2.下载https://packages.atlassian.com/maven-internal/opensymphony/xwork/1.0.3-atlassian-10/xwork-1.0.3-atlassian-10.jarhttps://packages.atlassian.com/maven-internal/opensymphony/webwork/2.1.5-atlassian-4/webwork-2.1.5-atlassian-4.jarhttps://confluence.atlassian.com/doc/files/1130377146/1137639562/3/1654274890463/CachedConfigurationProvider.class3.删除或者将 /confluence/WEB-INF/lib/xwork-1.0.3.6.jar/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar移出 Confluence 安装目录注:不要在目录中留下旧的  JAR  文件4. 将下载的 xwork-1.0.3-atlassian-10.jar 文件复制到 /confluence/WEB-INF/lib/ 目录中5.将下载的 webwork-2.1.5-atlassian-4.jar 文件复制到 /confluence/WEB-INF/lib/ 目录中6.检查两个新文件权限是否和所在目录的其他文件权限一致。7.切换到目 录/confluence/WEB-INF/classes/com/atlassian/confluence/setupa.创建一个名为的新目录 webworkb.将 CachedConfigurationProvider.class 复制到/confluence/WEB-INF/classes/com/atlassian/confluence/setup/webworkc.确保 CachedConfigurationProvider.class 文件和/confluence/WEB-INF/classes/com/atlassian/confluence/setup/webwork 目录权限正确8.启动 Confluence详细操作请参考官方:https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html参考链接:https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html
  • [基础组件] 【MRS】【jar包】华为MRS的jar包版本和开源的有差异吗?
    以flink为例,华为的1.12.2-hw-ei-312005和开源的1.12.2版本有差异吗?有没有途径获取完整的华为MRS所有依赖jar包(客户端中jar包不全)在8.1.2客户端中只有flink-connector-kafka_2.11_1.12.2-hw-ei-312005,但是没找到flink-java、flink-streaming-java_2.11对应的1.12.2-hw-ei-312005版本。
  • [其他] 【变更】集群升级后,升级preinstall工具报错noclassdeffounderror org wcc framework
    一、问题现象:8.0升级8.1.1.1 集群升级后,升级preinstall工具报错noclassdeffounderror org wcc framework log applogger二、问题分析报错是未找到wcc加解密相关jar包,因此是脚本中未正确找到wcc相关jar包在/opt/FusionInsight_SetupTool/upgrade/func/functions.sh中的如下函数中发现在查找wc2frm相关jar包时,jar包前未带*号,导致未正确找到相关jar包正常应该如下图所示:三、问题处理和操作人员确认,使用工具包版本有问题,更新工具包版本,重新执行正常
  • [问题求助] 【鲲鹏ecs产品】【编译功能】flink1.13.6编译 扫出x86的jar 需要求助
    你好有没有编译好的  frocksdbjni-5.17.2-ververica-2.1.jar   或者编译文档还有  frocksdbjni-5.17.2-ververica-2.1.jar和frocksdb-5.17.2-artisans-1.0.jar是什么关系呢    应该编译哪个包呢
  • [区域初赛赛题问题] 【XXX产品】【XXX功能】一句话描述问题 java可以引入jar包吗?
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件) java可以引入jar包吗?
  • [区域初赛赛题问题] 请问java输出打包成的zip文件下需要包含什么?一个jar包吗
    请问java输出打包成的zip文件下需要包含什么?一个jar包吗
  • [运维宝典] 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,查看参数已生效。
总条数:98 到第
上滑加载中