Hadoop的开发环境搭建
来源:互联网 发布:数据库概论第5版答案 编辑:程序博客网 时间:2024/05/17 09:11
首先来赞叹maven是真的好用。可以使apache的相关项目配置变得非常简单。。。
1.Windows下的maven安装:
前提:jdk及相关的环境变量配置好。
下载maven:http://mirror.bit.edu.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.zip
解压D:\Java\apache-maven-3.0.5
Maven环境配置:
变量名:MVN_HOME
变量值:D:\Java\apache-maven-3.0.5–根据自己的解压目录修改
找到path
在环境变量值尾部加入:;%MVN_HOME%\bin;—前面注意分号
配置调试
打开命令提示符(win+R,cmd),检查我们的java环境和maven环境是否有误。
mvn -v
如果能打印出maven的版本号,说明配置成功
修改本地仓库配置
修改我们仓库地址,仓库用于存放我们项目所依赖的所有jar包。
我的仓库路径:E:\maven\repo—-这个路径是我自己创建,你可以将路径创建在任何位置。
我们打开D:\Java\apache-maven-3.0.5\conf目录下的setting.xml文件,设置成我们创建的仓库路径
打开命令提示符,输入:mvn help:system
该命令会打印出所有的java系统属性和环境变量。
如果运行的过程中没有错误,打开我们仓库(E:\maven\repo)会发现里面多了一些文件。这些文件就是我们从maven的中央仓库下载到本地仓库的。
Myeclipse 结合Maven快速配置搭建web项目。
1打开Myeclipse, 进入window-preference-myeclipse-maven4myeclipse
设置maven安装路径
2设置当前库地址
3新建一个Web项目
进入Myeclipse,选择File-New Project-web project
完成后,
打开pom.xml可以看到myeclipse自动生成的依赖。
点击项目文件,右键->Run as->Maven install将依赖install至本地maven库
(这时候安装可能会出现一些错误,maven clean一下。然后执行maven install就可以了)
maven工程只要是apache的依赖直接在pom.xml中修改就会自动添加
(my)eclipse的配置
将编译好的hadoop-eclipse-plugin-2.2.0.jar插件拷贝到~\eclipse\plugins下
Hadoop路径,将之前搭建Hadoop集群的压缩包,在Windows中解压一份,window-preference-Hadoop Map/Reduce中设置目录到刚刚解压的Hadoop文件夹
打开Map/Reduce视图
新建并编辑hadoop参数:
Host:master的IP
Prot:8020
然后可以在eclipse中看见hdfs中的信息,证明连接成功。
新建Hadoop的maven工程
以下配置文件涵盖了hadoop、hive、hbase开发支持库的配置。
仅需针对maven工程pom.xml文件做相应更改就可以自动生成hadoop开发支持库。
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hadoop.version>2.5.0</hadoop.version> <hive.version>0.13.1</hive.version> <hbase.version>0.98.6-hadoop2</hbase.version></properties><dependencies> <!-- hadoop client --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!-- hive client --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>${hive.version}</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> </dependency> <!-- hbase client --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>${hbase.version}</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>${hbase.version}</version> </dependency></dependencies>
package mapreduce;import java.io.FileInputStream;import java.io.IOException;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;public class MyWordCountJob { /** * @author Edison Chou * @version 1.0 * @param KEYIN * →k1 表示每一行的起始位置(偏移量offset) * @param VALUEIN * →v1 表示每一行的文本内容 * @param KEYOUT * →k2 表示每一行中的每个单词 * @param VALUEOUT * →v2 表示每一行中的每个单词的出现次数,固定值为1 */ public static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> { protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context) throws java.io.IOException, InterruptedException { String[] spilted = value.toString().split(" "); for (String word : spilted) { context.write(new Text(word), new LongWritable(1L)); } }; } /** * @author Edison Chou * @version 1.0 * @param KEYIN * →k2 表示每一行中的每个单词 * @param VALUEIN * →v2 表示每一行中的每个单词的出现次数,固定值为1 * @param KEYOUT * →k3 表示每一行中的每个单词 * @param VALUEOUT * →v3 表示每一行中的每个单词的出现次数之和 */ public static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> { protected void reduce(Text key, java.lang.Iterable<LongWritable> values, Reducer<Text, LongWritable, Text, LongWritable>.Context context) throws java.io.IOException, InterruptedException { long count = 0L; for (LongWritable value : values) { count += value.get(); } context.write(key, new LongWritable(count)); }; } // 输入文件路径 public static final String INPUT_PATH = "hdfs://hadoop-master:9000/testdir/input/words.txt"; // 输出文件路径 public static final String OUTPUT_PATH = "hdfs://hadoop-master:9000/testdir/output/wordcount"; public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); // 0.0:首先删除输出路径的已有生成文件 FileSystem fs = FileSystem.get(new URI(INPUT_PATH), conf); Path outPath = new Path(OUTPUT_PATH); if (fs.exists(outPath)) { fs.delete(outPath, true); } Job job = new Job(conf, "WordCount"); job.setJarByClass(MyWordCountJob.class); // 1.0:指定输入目录 FileInputFormat.setInputPaths(job, new Path(INPUT_PATH)); // 1.1:指定对输入数据进行格式化处理的类(可以省略) job.setInputFormatClass(TextInputFormat.class); // 1.2:指定自定义的Mapper类 job.setMapperClass(MyMapper.class); // 1.3:指定map输出的<K,V>类型(如果<k3,v3>的类型与<k2,v2>的类型一致则可以省略) job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); // 1.4:分区(可以省略) job.setPartitionerClass(HashPartitioner.class); // 1.5:设置要运行的Reducer的数量(可以省略) job.setNumReduceTasks(1); // 1.6:指定自定义的Reducer类 job.setReducerClass(MyReducer.class); // 1.7:指定reduce输出的<K,V>类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); // 1.8:指定输出目录 FileOutputFormat.setOutputPath(job, new Path(OUTPUT_PATH)); // 1.9:指定对输出数据进行格式化处理的类(可以省略) job.setOutputFormatClass(TextOutputFormat.class); // 2.0:提交作业 boolean success = job.waitForCompletion(true); if (success) { System.out.println("Success"); System.exit(0); } else { System.out.println("Failed"); System.exit(1); } }}
创建mr类。
run as …
可以直接用eclipse查看结果了。
但是这是在pc机上跑的单机模式,要使用集群跑mr程序要打包成mr程序,上传到服务器上去,然后用集群跑。
- Hadoop的开发环境搭建
- hadoop开发环境搭建
- Hadoop开发环境搭建
- hadoop 开发环境搭建
- hadoop开发环境搭建
- Hadoop开发环境搭建
- hadoop开发环境搭建
- Hadoop开发环境搭建
- 搭建Hadoop开发环境
- 搭建Hadoop开发环境
- Hadoop - Hadoop开发环境搭建
- 搭建Hadoop的Eclipse开发环境
- Hadoop环境的搭建
- Hadoop环境的搭建
- Hadoop的环境搭建
- eclipse搭建hadoop开发环境
- Hadoop本地开发环境搭建
- eclipse搭建hadoop开发环境
- 大力stl——P2202 [USACO13JAN]方块重叠Square Overlap
- js自动缩放
- 剪花布条 kmp
- jQuery给动态添加的元素绑定事件的方法
- 快速成型 Axure RP使用实例
- Hadoop的开发环境搭建
- python3-文件读写练习:计算学生总成绩
- STM32Cube + Sublime + Keil使用技巧 更新ing
- Java线程-7:线程的调度-休眠
- HDU 6122
- ReactiveCocoa v2.5 源码解析之架构总览
- unity陀螺仪
- Qt中注册QML类型
- RNA-SEQ分析流程文献收集ing