下一代 Hadoop YARN 简介

YARN作为下一代Hadoop的核心组件,不仅提升了MapReduce的计算速度,还支持多种计算框架的统一管理和资源分配。本文介绍了YARN的主要特点,包括更快的MapReduce计算、多框架支持以及简化框架升级过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[align=center][size=large]下一代 Hadoop YARN 简介[/size][/align]
[size=medium]
[b](1) 更快地MapReduce计算[/b]
MapReduce仍是当前使用最广泛的计算框架。YARN利用异步模型对MapReduce框架的一些关键逻辑结构(如JobInprogress、TaskInProgress等)进行了重写,相比于MRv1,具有更快地计算速度。当然,YARN具有向后兼容性,用户在MRv1上运行的作业,无需任何修改即可运行在YARN之上。

[b](2) 对多框架支持[/b]
与MRv1相比,YARN不再是一个单纯的计算框架,而是一个框架管理器,用户可以将各种各样的计算框架移植到YARN之上,由YARN进行统一管理和资源分配,由于将现有框架移植到YARN之上需要一定的工作量,当前YARN仅可运行MapReduce这种离线计算框架。
我们知道,不存在一种统一的计算框架适合所有应用场景,也就是说,如果你想设计一种计算框架,可以高效地进行离线计算、在线计算、流式计算、内存计算等,是不可能的。既然没有全能的计算框架,为什么不开发一个容纳和管理各种计算框架的框架管理平台(实际上是资源管理平台)呢,而YARN正是干这件事情的东西。

YANR本质上是一个资源统一管理系统,这一点与几年前的mesos(http://www.mesosproject.org/),更早的Torque(http://www.adaptivecomputing.com/products/open-source/torque/)基本一致。将各种框架运行在YARN之上,可以实现框架的资源统一管理和分配,使他们共享一个集群,而不是“一个框架一个集群”,这可大大降低运维成本和硬件成本。
如果你还没有意识到当前已经进入多计算框架纵横捭阖的新时代,那让我来给你细数一下当前出现的,已小有名气的计算框架吧:

1) MapReduce: 这个框架人人皆知,它是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行处理,非常适合数据密集型计算。

2) Spark: 我们知道,MapReduce计算框架不适合(不是不能做,是不适合,效率太低)迭代计算(常见于machine learning领域,比如PageRank)和交互式计算(data mining领域,比如SQL查询),MapReduce是一种磁盘计算框架,而Spark则是一种内存计算框架,它将数据尽可能放到内存中以提高迭代应用和交互式应用的计算效率。官方首页:http://spark-project.org/

3) Storm: MapReduce也不适合进行流式计算、实时分析,比如广告点击计算等,而Storm则更擅长这种计算、它在实时性要远远好于MapReduce计算框架。官方首页:http://storm-project.net/

4) S4: Yahoo开发的流式计算框架,与Storm较为类似。官方首页:http://incubator.apache.org/s4/

5) Open MPI: 非常经典的消息处理框架,非常适合高性能计算,现在仍被广泛使用。

6) HAMA: 基于BSP(bulk-synchronous parallel model)模型的分布式计算框架,与Google的Pregel类似,可用于大规模科学计算,如矩阵,图算法,网络算法等,官方首页:http://hama.apache.org/。

7) Cloudera Impala/ Apache Drill: 基于Hadoop的更快的SQL查询引擎(比Hive快得多),Google Dremel的模仿者。Cloudera Impala官方首页:https://github.com/cloudera/impala,Apache Drill官方首页:http://incubator.apache.org/drill/

8) Giraph:图算法处理框架,采用BSP模型,可用于计算pagerank,shared connections, personalization-based popularity等迭代类算法。官方首页:http://giraph.apache.org/

上面很多框架正在或正准备往YARN上迁移,具体见:http://wiki.apache.org/hadoop/PoweredByYarn/

[b](3) 框架升级更容易[/b]
在YARN中,各种计算框架不再是作为一个服务部署到集群的各个节点上(比如MapReduce框架,不再需要部署JobTracler、TaskTracker等服务),而是被封装成一个用户程序库(lib)存放在客户端,当需要对计算框架进行升级时,只需升级用户程序库即可,多么容易!

[b]总结[/b]
YARN是在Hadoop 1.0基础上衍化而来的,它具有比Hadoop 1.0更为先进的理念和思想,它充分吸取了Hadoop 1.0的优势,但同时增加了很多新的特性和改进点。即使你不使用YARN,研究YARN对于改进你们当前Hadoop版本仍有巨大的帮助。

需要说明的是,由于YARN是一个崭新的系统,它完全不同于Hadoop 1.0。对于一般公司而言,将旧Hadoop系统往YARN上移植将是一件十分困难的事情,因为不同公司对YARN进行了或多或少的改造,这些改造或许已经不再兼容于主流的Hadoop版本。当向YARN升级时,你需要对兼容性进行充分的测试,以确保当前运行的作业仍可以正常地运行在移植后的系统上。 另外,需要引起注意的是,YARN会给运维人员带来巨大的麻烦,毕竟它是一个新系统。

当然,当前YARN还不成熟,仍处于高速酝酿阶段,讨论如何在线上使用它仍为时过早。不过,开始研究和学习它,作为一名有进取心和前瞻眼光的hadoopor,仍是十分必要的。


[b]杂谈分布式计算[/b]
在Hadoop、S4、Strom如此火的今天,不关注下分布式计算还真有点out了。分布式计算,一般来说会非常两大类:离线计算和在线实时计算。离线计算的理论基础是Map Reduce模型,典型开源代表就是hadoop了。在线实时计算方面这两年开始成为关注的重点,目前相对比较成熟的有雅虎的s4和twitter的storm。

在分布式计算框架方面,目前开源中做的比较好的是facebook和twitter,其中可以重点关注下facebook的这篇文章Real-time Analytics at Facebook。通过这里也可以看出一个比较好的分布式计算框架有三个部分:分布式日志采集系统、离线计算框架、在线实时计算框架。本文也从三个方面来谈。

分布式日志采集方面,目前facebook和twitter都是采用开源的scribe。对于大部分公司来说,直接基于scribe做一些优化基本上能够满足需要了。该系统的基本原理是:在日志采集源的地方部署对应的scribe客户端,然后把日志或者其他数据通过网络传输到scribe服务中转机器上,最后通过相应的agent写入到hdfs离线存储或者直接对应在线计算的输入流。

离线计算框架方面,目前基本上都是基于hadoop,然后在上游加入hive、pig做一些更加人性化或者通用化的工作,基本上能够满足所有的离线计算需求。关于hadoop,推荐入门文章《Hadoop:你不得不了解的大数据工具》。

在实时计算方面,有一些比较折中的做法,比如说facebook的ptail、puma等等。也有一些比较系统化的方案,比如twitter的storm、雅虎的s4等等。storm资料方面,推荐中文翻译的wiki库、Twitter Storm 实时数据处理框架分析总结、淘宝的一些文章(据说目前淘宝已经在生产环境使用)。关于s4方面,感兴趣的可以看看Yahoo!S4分布式流处理引擎分析总结、Yahoo! s4和Twitter storm的粗略比较

目前总体来说,最有挑战最不成熟也最有需求的还是在线实时计算方面。




http://dongxicheng.org/mapreduce-nextgen/resourcemanager-code-details/
http://dongxicheng.org/mapreduce-nextgen/rethinking-hadoop-from-problems-solved/
http://dongxicheng.org/mapreduce-nextgen/use-hadoop-yarn-to-build-a-cloud-system/
http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/

Impala
Impala入门笔记 : http://tech.uc.cn/?p=817
Impala/Hive现状分析与前景展望 : http://yanbohappy.sinaapp.com/?p=220 ;
大数据提速:Impala能否取代Hive: http://developer.51cto.com/art/201211/364219.htm

浅谈SQL on Hadoop系统 : http://www.weibo.com/cloudv8?is_ori=1
项目地址:https://github.com/cloudera/impala


hawq
左手Hive右手Impala :
http://cloud.chinabyte.com/news/99/12558599.shtml



hbase

http://www.searchtb.com/2011/01/understanding-hbase.html

hbase 0.95 最新官版hbase 0.95 最新官版
http://abloz.com/2012/05/30/hbase-0-95-chinese-version-of-the-official-document.html ;


hive
http://blog.didu.me/article/518
http://wenku.baidu.com/view/28609b80bceb19e8b8f6bab8.html
http://m.oschina.net/blog/81771[/size]
<think>好的,我现在要处理用户关于Android 12中RKNN开发配置和使用教程的问题。首先,我需要回顾用户提供的引用内容,看看是否有相关的信息。 用户提供了三个引用。引用1提到了RKNN Model Zoo和RKNN Toolkit2的环境配置,包括安装Miniconda3。引用2是关于系统镜像下载,特别是Ubuntu 22.04版本和导出ONNX模型。引用3讨论了RV1808/1126使用RKNN作为MediaPipe推理后端的步骤,包括配置参数如use_rga、use_mmap和data_type的设置,以及反量化的处理。 用户的问题集中在Android 12上,所以需要将引用中的信息与Android系统关联起来。引用3提到了MediaPipe和RKNN的集成,这可能适用于Android开发,但需要确认是否支持Android 12。此外,RKNN Toolkit2的环境配置可能在不同平台上有所不同,用户可能需要针对Android进行调整。 接下来,我需要考虑Android开发中RKNN的一般步骤,比如环境准备、模型转换、集成到Android应用、配置参数和性能优化。结合引用中的信息,模型转换部分可以参考引用2提到的导出ONNX模型,然后使用RKNN Toolkit转换为RKNN格式。引用3中的配置参数(如use_rga、use_mmap、data_type)可能在Android中同样适用,但需要查阅相关文档确认。 可能还需要指导用户如何将RKNN库集成到Android项目中,比如添加依赖项或NDK配置。此外,性能优化方面,引用3提到的反量化处理可能需要特别注意,尤其是在Android设备上的实现。 最后,确保回答结构清晰,分步骤说明,并引用提供的资料。需要验证引用中的信息是否适用于Android 12,例如系统镜像是否支持,或者是否有特定版本的要求。如果某些步骤在引用中没有明确说明,可能需要提示用户参考官方文档或社区资源。</think>### Android 12 RKNN 开发配置与使用教程 #### 1. **环境准备** - **系统镜像与工具链**: 根据引用[2],建议使用Ubuntu 22.04作为开发环境,并下载Orange Pi 5 Pro等支持RKNN的硬件镜像。对于Android 12开发,需确保RKNN Toolkit2适配Android NDK版本(推荐NDK 21+)[^2]。 - **安装RKNN Toolkit2**: 参考引用[1],通过Miniconda3配置Python环境(建议Python 3.8),并安装RKNN Toolkit2以支持模型转换与推理。命令示例: ```bash pip install rknn_toolkit2 ``` #### 2. **模型转换(ONNX转RKNN)** - **导出ONNX模型**: 使用PyTorch或TensorFlow等框架导出模型为ONNX格式(引用[2])。 - **转换为RKNN格式**: 编写RKNN配置文件(`config.yml`),指定输入尺寸、量化方式等参数。示例代码: ```python from rknn.api import RKNN rknn = RKNN() rknn.config(target_platform='rk3568', mean_values=[[127.5]], std_values=[[127.5]]) rknn.load_onnx(model="model.onnx") rknn.build(do_quantization=True, dataset="dataset.txt") rknn.export_rknn("model.rknn") ``` #### 3. **Android项目集成** - **添加RKNN库依赖**: 将编译好的RKNN动态库(`librknnrt.so`)和模型文件(`model.rknn`)放入Android项目的`jniLibs`目录。 - **JNI接口开发**: 通过JNI调用RKNN的C/C++ API实现推理。关键配置参考引用[3]: ```cpp #include <rknn/rknn_runtime.h> rknn_context ctx; int ret = rknn_init(&ctx, model_path, 0, 0, nullptr); ret = rknn_inputs_set(ctx, input_num, input_attrs); ret = rknn_run(ctx, nullptr); ret = rknn_outputs_get(ctx, output_num, output_attrs, nullptr); ``` #### 4. **关键配置参数** - **use_rga与use_mmap**: 根据引用[3],若Android设备不支持硬件加速(如RGA),需将`use_rga`和`use_mmap`设为`false`。 - **数据量化类型**: `data_type`可选`uint8`或`fp32`。若选`uint8`,需手动实现反量化;若选`fp32`,RKNN会自动处理[^3]。 #### 5. **性能优化** - **多线程推理**: 利用Android的`ThreadPoolExecutor`并行处理输入数据。 - **内存优化**: 启用`use_mmap`(若支持)减少内存拷贝开销,或通过零拷贝技术直接操作物理内存。 #### 6. **调试与验证** - **日志输出**: 启用RKNN的调试模式(`RKNN_LOG_LEVEL=DEBUG`)查看详细运行信息。 - **性能分析**: 使用`rknn.query(RKNN_QUERY_PERF_DETAIL)`获取各层耗时,针对性优化模型结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值