什么是Apache Hadoop的春天?

概观: 弹簧 is one of the widely used frameworks in enterprise applications development. 弹簧 有一个像春天的ORM不同的组件, 春天JDBC等,以支持不同的功能. 春季为Apache Hadoop是支持像Hadoop的HDFS应用组件建设框架, MapReduce和蜂巢等. 弹簧 提供API,所有这些组件协同工作. Spring还支持与其他春天生态系统项目为现实生活中的应用开发Hadoop的集成. 在这篇文章中,我们将讨论的用法 弹簧 为Apache的Hadoop框架.

介绍:
Apache的Hadoop是一个开源软件框架, 这是用来存储和处理数据集较大体积的. 春天也是一个开源框架, 它广泛用于在Java / J2EE应用程序. Spring的依赖注入 (作者:) 或控制反转 (IO) 机制已成为一种流行的替代企业Java Beans (或EJB) 模型. 春天有被足够灵活的优势,与任何其他开发框架很容易地插入. 使用Spring的这个优势, 我们可以与Apache Hadoop的插上它来帮助我们每两个框架的最大利益.

入门:
在本节中,我们将讨论如何创建使用Spring的Hadoop MapReduce工作. 这涉及到以下步骤: -

  • Step 1 - 获得使用Maven所需的依赖 - 正如我们所知道Maven是高度依赖于pom.xml文件, 我们输入以下内容在我们的pom.xml文件. 这些依赖项是Hadoop的核心和Spring框架.

清单1: 在pom.xml文件示例配置条目

[码]

< !– 春季数据的Apache Hadoop的 — >
< 依赖 >
< 的groupId > org.springframework.data </ 的groupId >
< 的artifactId > 弹簧数据的Hadoop </ 的artifactId >
< 版本 > 1.0.0.发布 </ 版本 >
< /依赖 >
< !– Apache的Hadoop的核心 - - >
< 依赖 >
< 的groupId > org.apache.hadoop </ 的groupId >
< 的artifactId > Hadoop的核心 </ 的artifactId >
< 版本 > 1.0.3 </版本 >
</依赖>

[/ 码]

  • Step 2 - 创建映射器组件 - 我们知道一个映射器组件被用来打破的实际问题分解成更小的组件. 这些较小的组件,然后变得更容易解决. 我们可以通过扩展Apache的地图减少映射类有我们自己的定制映射器组件. 我们需要重写此类的地图方法. 映射器类有下面的四个参数 -

对于输入: 下面的参数输入键和值

  • THEN - 该参数描述被提供作为输入到映射器组件的主要类型.
  • VALUEIN - 该参数描述了作为输入到映射器组件提供的值的类型.

对于输出: 以下的参数是输出键和值

  • KEYOUT - 此参数描述把关键参数从mapper组件出的类型.
  • VALUEOUT - 该参数描述了从映射器元件的输出值的类型.

每个参数必须实现 可写的 interface. 在给出的例子, 我们使用我们的映射器一次读取一个文件中的一个行的内容,并准备每行的键 - 值对. 我们的地图方法的实现执行以下任务 -

  • First, 每个分割一行成词
  • , 通过每一个字重复,并采取了既不所有的Unicode字符既不是字母也不人物.
  • , 使用的写入方法构造一个键值对 上下文 类与预期输出的键值对兼容.

Listing2: 样品定制映射类

[Code]

公共类MyWordMapper扩展映射<LongWritable, 文本, 文本, IntWritable> {
私人文本myword =新文本();

@覆盖
保护无效地图(LongWritable关键, 文本值, 上下文的背景下) 抛出IOException异常, InterruptedException的 {
串线= value.toString();
StringTokenizer的lineTokenz =新的StringTokenizer(line);
而 (lineTokenz.hasMoreTokens()) {
字符串cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, 新IntWritable(1));
}
}

/**
* 更换既不是数字也不是字母加一个空字符串所有Unicode字符.
* @参数原创, 它是原字符串
* 返回:只包含字母和数字的字符串对象
*/
私人字符串removeNonLettersNonNumbers (原字符串) {
返回original.replaceAll(“[^ \ p{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - 创建 减速器 组件 - 减速是删除不需要的中间值,并只转发那些键值对其中相关的组件. 有我们的定制减速机, 我们的类应该延长 减速器 级及以上乘坐的降低方法. 减速机类有下面的四个参数.

对于输入: 下面的参数输入键和值

  • THEN - 该参数描述被提供作为输入到映射器组件的主要类型.
  • VALUEIN - 该参数描述了作为输入到映射器组件提供的值的类型.

对于输出: 以下的参数是输出键和值

  • KEYOUT - 此参数描述把关键参数从mapper组件出的类型
  • VALUEOUT - 该参数描述了从映射器元件的输出值的类型.

在实施我们必须确保了“科印”和“KEYOUT”参数的数据类型相同. 也'valuein'和valueout'参数应相同类型的. 我们的减少方法的实施将执行以下步骤: -

  • First, 检查输入键包含所需单词.
  • , 如果上述步骤是真, 获得的单词出现的次数.
  • , 通过调用减速器类的write方法构造一个新的键值对.

Listing3: 样品定制减速类

[Code]

进口org.apache.hadoop.io.IntWritable;
进口org.apache.hadoop.io.Text;
进口org.apache.hadoop.mapreduce.Reducer;

公共类MyWordReducer扩展减速<文本, IntWritable, 文本, IntWritable> {
受保护的静态最后弦乐MY_TARGET_TEXT = “Hadoop的”;

@覆盖
保护无效减少(文字keyTxt, 可迭代<IntWritable> 值, 上下文的背景下) 抛出IOException异常, InterruptedException的 {
如果 (containsTargetWord(keyTxt)) {
INT wCount = 0;
为 (IntWritable值: 值) {
wCount = value.get();
}
context.write(键, 新IntWritable(wCount));
}
}
私人布尔containsTargetWord(文字keyTxt) {
返回keyTxt.toString().等于(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - 创建应用程序上下文 - 下一步是创建使用XML的应用程序上下文. 我们可以配置使用以下步骤我们的应用程序的应用程序上下文 -
    • 创建一个属性文件,其中包含配置属性的值. 示例应用程序属性文件如下所示 -

[Code]
fs.default.name = HDFS://本地:9000
mapred.job.tracker =本地主机:9001
input.path = /路径/要/输入/文件/
output.path = /路径/要/输出/文件
[/Code]

  • 配置用来从创建的属性文件中获取配置属性的值的属性占位符. 这可以通过在我们的应用程序上下文XML文件中添加应做到以下几点 -

[Code]
<背景:财产占位符的位置=”classpath:application.properties” />

[/Code]

  • 配置Apache Hadoop和它的工作 - 我们可以配置默认的文件系统,它的工作跟踪器在我们的应用程序上下文文件中添加以下

[Code]

<HDP:组态>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:组态>

[/Code]

我们要添加以下在我们的应用程序上下文XML文件来定义作业跟踪器 -

[Code]
<HDP:作业id =”wordCountJobId”
输入路径=”${input.path}”
输出路径=”${output.path}”
罐逐类=”net.qs.spring.data.apachehadoop.Main”
映射器=”net.qs.spring.data.apachehadoop.MyWordMapper”
减速=”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • 配置它运行Hadoop的创建作业的作业亚军. 作业亚军可以通过我们的应用程序上下文XML文件中添加下列配置

[Code]
<HDP:工作亚军ID =”wordCountJobRunner” 工作-REF =”wordCountJobId” 运行在-启动=”真”/>
[/Code]

  • Step 5 – 装载应用程序环境在启动时 - 当应用程序启动我们现在可以通过加载应用程序上下文中执行创建工作的Hadoop. 我们可以通过创建一个接受我们的应用程序上下文文件作为输入参数的名称给构造函数的ClassPathXmlApplicationContext对象的实例做到这一点. 这是可以做到的下 -

Listing4: 应用程序上下文的样本显示加载

[Code]
进口org.springframework.context.ApplicationContext;
进口org.springframework.context.support.ClassPathXmlApplicationContext;

公共类主 {
公共静态无效的主要(串[] 参数) {
ApplicationContext的CTX =新的ClassPathXmlApplicationContext(“applicationContext.xml中”);
}
}

[/Code]

  • Step 6 - 运行MapReduce工作 - 我们就可以开始我们的地图使用以下步骤减少工作 -
  • 上传输入文件到HDFS - 我们可以通过在命令提示符下执行以下命令来做到这一点 -

[Code]

Hadoop的DFS -put sample.txt的/input/sample.txt

[/Code]

以下是这已在本实施例中使用的样品输入文件. 目标关键词“Hadoop的“ 中突出 绿色. 这个单词 'Hadoop的“ 存在 4 样品中次.

Input

输入

此搜索: 示例输入文件

  • 检查文件是否已被运行以下命令上传成功. 它将显示输入文件.

[码]

Hadoop的DFS -ls /输入

[/码]

  • 运行MapReduce工作. 这可以通过从IDE执行我们的java文件的主要方法来完成. 如果所有的步骤,如预期那么下面将是输出.

产量: Hadoop的 4
Summary: 让我们总结一下我们在下面的子弹至今讨论 –

  • 弹簧Hadoop的 来自开源社区的有用框架.
  • 通过结合这些,我们可以得到两个框架的好处.
  • 创建地图减少作业中使用Spring是一个六步过程如上所述.
Tagged on: ,
============================================= ============================================== 在亚马逊上购买最佳技术书籍,en,电工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share