MapReduce1,HashCode
Java基本类型 |
Writable |
序列化大小(字节) |
布尔型(boolean) |
BooleanWritable |
1 |
字节型(byte) |
ByteWritable |
1 |
整型(int) |
IntWritable |
4 |
VIntWritable |
1~5 |
|
浮点型(float) |
FloatWritable |
4 |
长整型(long) |
LongWritable |
8 |
VLongWritable |
1~9 |
|
双精度浮点型(double) |
DoubleWritable |
8 |
[root@master ~]# rz -E
rz waiting to receive.
[root@master ~]# ls
ac.sh words.txt 文档
anaconda-ks.cfg 公共 下载
dump.rdb 模板 音乐
initial-setup-ks.cfg 视频 桌面
mysql57-community-release-el7-10.noarch.rpm 图片
[root@master ~]# cat words.txt
java,c,c++,sql,scale,python
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix[root@master ~]# mv words.txt /usr/local/soft/data/
[root@master ~]# cd /usr/local/soft/data/
[root@master data]# ls
new_db.sql student.sql theZen.txt words.txt
score.sql theZenOfPython.txt wordcount
[root@master data]# cat words.txt
java,c,c++,sql,scale,python
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
[root@master data]# hdfs dfs -put words.txt /data/wc/input/
package com.shujia.MapReduce;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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.output.FileOutputFormat;import java.io.IOException;public class Demo01WordCount {//Map任务/***继承Mapper类,指定输入的K-V的类型以及输出K-V的类型* 然后重写map方法*/public static class MyMapper extends Mapper<LongWritable, Text,Text, IntWritable> {@Override/*** key 偏移量* value 一行数据* context MR任务运行的是上下文环境,可以获取当前运行的配置等其他信息* 主要用于将map端构建好的K-V进行输出*/protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {//自己的map逻辑//按分割符切分除每一个单词String[] splits = value.toString().split(",");for (String word : splits) {//以单词做为key,1作为value,构建好输出的K-V//再通过context输出/*** java,c,c++,sql,scale,python* 输出:java,1* c,1* c++,1* sql,1* scale,1* python,1*/Text outPutKey = new Text(word);IntWritable outputValue = new IntWritable(1);context.write(outPutKey,outputValue);}}}/***继承Reducer类,指定输入的K-V的类型(同map端的输出K-V类型保存一致)以及输出K-V的类型* 然后重写map方法*///Reduce任务public static class MyReducer extends Reducer<Text, IntWritable,Text,IntWritable>{@Override/*** key 经过shuffle过程,相同的K进入到同一个reduce* values 相同的Key对应的value的一个“集合”* context 主要用于输出数据到HDFS*/protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {int sum=0; //用于保存最后的结果for (IntWritable value : values) {sum+=value.get();}//将最后的结果输出context.write(key,new IntWritable(sum));}}//Driver程序,主要负责配置和提交任务public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");//创建一个MapReduce的jobJob job = Job.getInstance(conf);//配置任务job.setJobName("Demo01WordCount");//设置任务运行哪个类job.setJarByClass(Demo01WordCount.class);//设置Reduce的数量,默认是1,最终生成文件的数量同Reduce的数量一致job.setNumReduceTasks(3);//配置map端//指定map运行时哪一个类job.setMapperClass(MyMapper.class);//配置Map端输出的key类型job.setMapOutputKeyClass(Text.class);//配置Map端输出的value类型job.setMapOutputValueClass(IntWritable.class);//配置Reduce端//指定Reduce运行时哪一个类job.setReducerClass(MyReducer.class);//配置Reduce端输出的key类型job.setOutputKeyClass(Text.class);//配置Reduce端输出的value类型job.setOutputValueClass(IntWritable.class);//配置输入输出路径/*** hdfs dfs -mkdir /data/wc/input* hdfs dfs -put words.txt /data/wc/input*/FileInputFormat.addInputPath(job,new Path("/data/wc/input"));Path path = new Path("/data/wc/output");FileSystem fs = FileSystem.get(conf);//判断输出路径是否存在,存在则删除if (fs.exists(path)){fs.delete(path,true);}//输出路径已存在,会报错FileOutputFormat.setOutputPath(job,path);//等待任务完成job.waitForCompletion(true);}/*** 1.将words.txt上传至虚拟机并使用HDFS命令上传至HDFS* hdfs dfs -mkdir /data/wc/input* hdfs dfs -put words.txt /data/wc/input* 2.将代码通过maven的package打包成jar包,并上传至虚拟机* 3.使用命令提交任务* hadoop jar hadoop-1.0-SNAPSHOT.jar com.shujia.MapReduce.Demo01WordCount* 查看日志:在任务运行时会自动生成一个applicationId* yarn logs -applicationId application_1647858149677_0004* 也可以通过historyserver去查看,因为任务真正运行在NodeManager中,日志可能会分散* historyserver可以负责从Nodemanager中收集日志到Master中方便查看日志* 启动historyserver:在Master上启动即可* mr-jobhistory-daemon.sh start historyserver* http://master:19888*/
}
[root@master data]# cd ..
[root@master soft]# ls
0?? hadoop-2.7.6 redis shell01 zookeeper-3.4.6
A?? jdk1.8.0_171 redis-6.2.6 show
data packages shell test.txt
[root@master soft]# mkdir jars
[root@master soft]# mv data/hadoop-1.0-SNAPSHOT.jar ./jars/
[root@master soft]# ls
0?? hadoop-2.7.6 packages shell test.txt
A?? jars redis shell01 zookeeper-3.4.6
data jdk1.8.0_171 redis-6.2.6 show
[root@master soft]# cd jars/
[root@master jars]# ls
hadoop-1.0-SNAPSHOT.jar
[root@master jars]# pwd
/usr/local/soft/jars
[root@master jars]# hadoop jar hadoop-1.0-SNAPSHOT.jar com.shujia.MapReduce.Demo01WordCount
[root@master jars]# hdfs dfs -cat /data/wc/output/part-r-00000
c++ 1
datax 4
hbase 4
hive 4
kettle 4
mysql 4
spark 4
package com.shujia;public class HashCode {public static void main(String[] args) {String k1="spark";String k2="c++";String k3="datax";String k4="hbase";String k5="hive";String k6="kettle";String k7="mysql";int numReduceTasks = 3;System.out.println(k1.hashCode()%numReduceTasks);System.out.println(k2.hashCode()%numReduceTasks);System.out.println(k3.hashCode()%numReduceTasks);System.out.println(k4.hashCode()%numReduceTasks);System.out.println(k5.hashCode()%numReduceTasks);System.out.println(k6.hashCode()%numReduceTasks);System.out.println(k7.hashCode()%numReduceTasks);}
}
[root@master ~]# mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /usr/local/soft/hadoop-2.7.6/logs/mapred-root-historyserver-master.out
[root@master ~]# yarn logs -applicationId application_1647858149677_0004
MapReduce1,HashCode相关推荐
- 【Java8】堆栈/队列/数组/链表/红黑树,List/set子接口,hashcode/hashset,Map/内部接口,/统计字符个数,debug,斗地主,Collections,TreeSet
文章目录 1.堆栈/队列/数组/链表:数据结构即计算机组织管理数据的方式,堆栈指的是内存图中的栈,不是堆 2.红黑树:二查,二查平,二查平1倍 3.List子接口:集合,IndexOutOfBound ...
- 【Java5】String类,StringBuilder类,ArrayList类,Object类(toString,equals,hashCode)
文章目录 1.String类:字符串常量在Java中不属于基本数据类型, 而是引用/类类型 1.1 使用:new String(...) 1.2 判断:equals函数是用来比较两个对象是否相等 1. ...
- IntelliJ IDEA:使用Google Guava生成equals,hashCode和toString
问题 在Java领域,我们经常需要编写equals , hashCode和toString方法. 老实说,这通常只是一个样板义务. 得益于智能IDE,我们通常不再自己这样做. 我们只是让和IDE一起努 ...
- 番石榴的对象类:Equals,HashCode和ToString
如果您有幸使用JDK 7 ,那么新的可用Objects类 ( 至少对我来说 )是实现"通用" Java对象方法(例如equals(Object) [with Objects.equ ...
- java中equals,hashcode和==的区别
原文地址http://blog.csdn.net/hla199106/article/details/46907725 1.== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 ...
- 关于hash,hashCode, hashMap,红黑树
小刘老师讲HashMap源码 小刘老师讲红黑树 hash,hashCode,hashMap 1.前提知识 数组: 列表: 散列表 什么是hash? hash也称散列,哈希,基本原理就是把任意长度的输入 ...
- List去重为什么要写equals(),hashCode()方法
一,各个集合的特点: Collection(集合):容器,用于存放对象(引用类型.基本类型需要自动装箱) List(列表):元素有序,元素可以重复 (有索引). 通过元素的equals()方法判断是否 ...
- Object类—复写equals方法,hashCode方法,toString方法
Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object {private int age;Person(in ...
- Java双等号,Equals(),HashCode()小结
默认情况 - 双等号==,比较的是内存地址. - equals(),默认比较的是内存地址. - hashCode(),默认返回的是object的内存地址. String中方法改写的情况 经常会遇到需要 ...
最新文章
- 工业界 vs. 学术界: 一个年轻员工的视角
- boost::graph模块实现分布式压缩稀疏行图类型的测试
- java使用ajax异步刷新_Jquery的Ajax实现异步刷新
- VHDL基本门电路和数值比较器的设计
- ie的window.open 未指明的错误_快递问题公告中错误使用“黑恶势力”等言辞 青岛工学院致歉...
- cocos creator 方法数组_Creator | 优化三剑客之内存!
- 下载的长数据怎么分开R语言_TCGA数据库单基因gsea作业之COAD-READ
- python中的and_我想问下python中 逻辑与:“”和“and”的区别
- c1200 写频软件_金飞讯写频软件-金飞讯a66写频软件(金飞讯a66对讲机写频软件)1.0 一键安装版-东坡下载...
- 全概率公式和贝叶斯公式的应用 (概统1)
- 算数平均数、中位数、众数和几何平均数
- 使用C++调用Socket接口实现简易TCP服务器
- CF1137A/1138C Skyscrapers
- 长期在计算机房内会有多大辐射,机房辐射范围和预防辐射?计算机房里面适用的屏蔽隔离防辐射材料是什么?...
- 魔兽世界选择服务器未响应,魔兽世界7.0军团再临常见技术性问题解决方案汇总...
- 【数据分析】京东平台用户画像分析
- Linux编译QT项目时报错: error: cannot find -lGL 的解决方法
- requires INJECT_EVENTS permission
- vue.js 的学习
- 查询无限级/三级分销的简单易用SQL