maven打包
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序(例如:jar包),并发运行在一个Hadoop集群上。
(二)设置编译版本
我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。
(三)修改代码,设置执行环境和文件路径
我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。
(四)上传到节点运行
使用finalshell上到任意节点,例如hadoop100上的/opt下,。
然后通过命令来执行执行WordCount程序,注意要写Driver类的全名
(五)修改执行参数
在上面的代码中,我们的程序只能完成固定目录下的功能。现在希望它能处理不同的目录。
修改代码,让程序能指定要执行的输入目录和要保存结果的输出目录。
修改driver类的代码,更新输入和输入路径。
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。它的任务会跑好几个小时,好几天。
2)不擅长流式计算
流式计算的输入数据是动态的,会一条一条的过来,是动态产生的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。
3)不擅长DAG(有向无环图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。