hadoop2简介 - yarn平台

 

 

1 简介:

 



 

 

 



 


 

 

 

yarn架构:

       资源: 运行程序需要的CPU,内存,磁盘,网络

       resourceManager: 资源管理,只要需要资源我就协调,不管需要资源的应用是 mapreduce/storm/spark

       applicationMaster: 应用管理, 只要是应用,不管是mapreduce/strom/spark的应用类型都管理

       applicationMaster类比于JDBC,是一个标准,旗下的具体实现有:

       mapreduceApplicationMaster, StormApplicationMaster, SparkApplicationMaster

       JDBC旗下的具体实现有: ibatis, hibernate

      

maprecue架构:

         简单理解就是由一堆堆的函数组成,管理和调用的是一个个的程序,

         每台机器就是一个独立的操作系统,这台机器做这件事,另一台机器做另一个事,

         机器A做的事和机器B是独门独户的,这样就会存在资源利用不高的问题。

         比如A机器只有mysql服务器,使用频率并不高

 

这两个架构可以这么联想理解:

         yarn架构是社会主义国家,国家统一支配每个家庭(从节点)的所有资源,能统筹全局,集中力量办大事

         mapreduce架构是资本主义国家,每个家庭关起门来自己做自己的事,彼此隔离隐私。

 

 

 hadoop2: 文件存储系统hdfs + 资源管理调度系统yarn + 批处理计算框架mr 组成。

启动程序,常驻内存的是 HDFS YARN 。

mr计算框架只有在运行的时候才有。

 

hdfs:  获取数据时,类比于人去银行网点取钱,只关注能取到钱,而不关注
       获取的钱是存在哪个地址的银行中

 

 

 

1)为何产生hadoop2, yarn平台内部成员关系介绍

回答:
a) 在hadoop1中,jobtracker的职责主要是资源(slot)管理、应用管理。
  仅仅作为出入证的作用,并不在意进入的资源是大房间(4核 16G内存 CPU主频一般)还是小房间(8核 128G内存 CPU主频更高),是一种比较粗的资源划分
 
b)资源管理: 类比于静态管理,搭建好后,就一直存在着
  应用管理: 类比于动态管理,有起始时间
  这两者管理不是同一层面的东西,不符合Java中职责单一原则
 
c) hadoop1中MapReduce框架依赖磁盘io进行计算的大数据计算的解决方案。优点是可以处理海量数据,缺点是处理速度慢。
   而在现实需求中,有离线批处理的的,有实时的,有迭代式调用的,真实需求较多,hadoop1架构太局限。

d) 基于以上几点,把hadoop1的mapreduce架构拆分出来, 
    资源管理:ResourceManager
 应用管理:跟着应用而生,应用在他在,应用结束他结束,应用可以是多种类型 eg:离线的mapreduce 实时的strom等
 资源管理和应用管理的逻辑总和就是 yarn平台
 
 类比记忆:
 yarn平台: 国家税务局--->公司要来我局里申请挂牌,同时接受我局管理,我局会派工作人员(ApplicationMaster)管理公司(maprecue应用 storm应用等)
 各种应用: 各种类型的公司--->mapreduce storm等
 ResourceManager: 国家税务局领导,负责协调来注册的公司使用我国资源的

 

 
 hadoop各种版本文档地址:

http://hadoop.apache.org/docs/

 

 hadoop2 yarn 介绍:

 

a)yarn如何管理节点资源的呢??
b)应用如何提交到yarn上 然后yarn上运行并将结果返回给应用的?

 

 答案见下图:

 

 

 

hdfs和map任务关系:

 



 

hadoop2生态圈分子:



 

 

下面是yarn平台结构图

 




 
 

<think>好的,我需要帮助用户解决他们遇到的Class loading error,具体是找不到AmIpFilter类的问题。根据用户提供的引用内容,用户已经尝试复制了hadoop-lzo-0.4.19.jar到lib目录,但问题依旧存在。用户现在想确认Hadoophadoop-yarn-server-webproxy组件是否存在,并希望得到解决异常的方案。 首先,我需要回顾之前的回答,看看是否有遗漏或需要补充的地方。之前的解决方案提到了依赖缺失、类路径配置错误、环境变量问题和服务器缓存。用户现在可能已经检查了部分步骤,但问题仍未解决,需要更详细的指导。 用户引用的错误日志显示,在复制hadoop-lzo的jar后,仍然出现ClassNotFoundException,说明hadoop-yarn-server-web-proxy的jar可能没有正确引入。需要确认该组件的存在以及路径是否正确。 接下来,我应该分步骤详细说明如何确认组件是否存在,并提供具体的检查方法。比如,通过Hadoop安装目录查找相关jar,检查项目依赖,环境变量设置是否正确,以及如何验证类加载等。 此外,用户提到的是JanusGraph与Hadoop集成的情况,可能需要考虑两者的版本兼容性,以及是否有额外的配置步骤,比如修改JanusGraph的配置文件。 还需要注意用户可能遇到的常见问题,比如依赖冲突,特别是如果用户使用了不同的Hadoop版本,或者构建工具中的依赖管理不当,导致版本不一致。 最后,应该提供验证步骤,确保用户按照指导操作后问题得到解决,并生成相关问题帮助用户进一步排查可能的问题。</think>### 分步解决方案 根据您提供的错误日志和引用信息,`AmIpFilter`类属于**Hadoop YARN Web代理组件**(`hadoop-yarn-server-web-proxy`)。以下是具体验证和修复步骤: --- #### **1. 确认Hadoop组件是否存在** **验证目标**: 确保Hadoop安装目录中包含`hadoop-yarn-server-web-proxy`的JAR文件。 **操作步骤**: 1. **定位Hadoop安装路径** 执行以下命令,确认`HADOOP_HOME`环境变量是否正确: ```bash echo $HADOOP_HOME # 输出应为Hadoop安装路径,如/usr/local/hadoop-3.3.6 ``` 若未设置,需手动指定路径(例如`/usr/local/hadoop`)。 2. **检查组件JAR文件** 进入HadoopYARN模块目录,查找`hadoop-yarn-server-web-proxy`的JAR包: ```bash ls $HADOOP_HOME/share/hadoop/yarn/hadoop-yarn-server-web-proxy-*.jar ``` - **预期结果**:应显示类似`hadoop-yarn-server-web-proxy-3.3.6.jar`的文件。 - **若不存在**:说明Hadoop安装不完整,需重新安装或补充组件[^1]。 --- #### **2. 修复类加载异常** **核心问题**: `AmIpFilter`类位于`hadoop-yarn-server-web-proxy`的JAR中,但未正确部署到应用(如JanusGraph)的类路径。 **操作步骤**: 1. **手动复制缺失的JAR** 将Hadoop的`web-proxy`组件和依赖的`hadoop-lzo`包复制到JanusGraph的`lib`目录: ```bash # 复制web-proxy组件 cp $HADOOP_HOME/share/hadoop/yarn/hadoop-yarn-server-web-proxy-*.jar $janusgraph-home/lib/ # 复制LZO压缩支持(根据您的引用[1],已执行此步骤,但需确认版本一致性) cp $HADOOP_HOME/share/hadoop/tools/lib/hadoop-lzo-0.4.19.jar $janusgraph-home/lib/ ``` 2. **验证类路径包含性** 检查JanusGraph启动脚本(如`janusgraph-server.sh`)是否包含`lib`目录: ```bash # 示例启动命令类路径配置 java -cp "$janusgraph-home/lib/*:...其他路径..." ... ``` 若未包含`lib/*`,需在脚本中添加`$janusgraph-home/lib/*`到`CLASSPATH`。 3. **清理缓存并重启服务** Jetty等服务器可能缓存旧类文件,需清理工作目录后重启: ```bash rm -rf $janusgraph-home/tmp/* # 清理临时文件 $janusgraph-home/bin/janusgraph-server.sh restart # 重启服务 ``` --- #### **3. 版本兼容性检查** **潜在问题**: Hadoop版本与JanusGraph集成的Hadoop客户端版本不匹配(例如Hadoop 3.x与JanusGraph依赖的Hadoop 2.x)。 **操作步骤**: 1. **检查项目依赖声明** 若使用Maven/Gradle,确认`hadoop-yarn-server-web-proxy`版本与Hadoop集群一致: ```xml <!-- Maven示例:版本需与HADOOP_HOME中的版本一致 --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-server-web-proxy</artifactId> <version>3.3.6</version> </dependency> ``` 2. **排除冲突依赖** 使用`mvn dependency:tree`检查是否存在其他组件(如Spark、HBase)引入了旧版Hadoop依赖: ```xml <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.6</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-server-web-proxy</artifactId> </exclusion> </exclusions> </dependency> ``` --- #### **4. 验证类加载** **操作步骤**: 1. **手动测试类加载** 执行以下命令,确认JVM能否找到`AmIpFilter`类: ```bash java -cp "$janusgraph-home/lib/*" org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter ``` - **成功**:无输出或提示缺少主类(正常,因该类是Filter,非可执行类)。 - **失败**:若仍报`ClassNotFoundException`,说明JAR未正确部署或损坏。 2. **检查日志详细信息** 查看JanusGraph服务启动日志,定位类加载失败的具体原因: ```bash tail -n 100 $janusgraph-home/logs/janusgraph-server.log ``` --- ### 关键总结 | 问题根源 | 解决动作 | 验证方法 | |-------------------------|---------------------------------------|------------------------------| | `hadoop-yarn-server-web-proxy`缺失 | 复制JAR到`lib/`目录 | 检查`lib/`下是否存在对应JAR | | 版本冲突 | 统一Hadoop组件版本或排除冲突依赖 | `mvn dependency:tree` | | 类路径配置错误 | 修正启动脚本中的`CLASSPATH` | 检查启动命令参数 | --- ### 相关问题 1. 如何排查Hadoop依赖冲突导致的`NoClassDefFoundError`? 2. JanusGraph集成Hadoop时需要哪些额外配置? 3. Jetty服务器类加载机制与Tomcat有何区别?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值