hadoop相关
执行wordcount
代码
- package org.apache.hadoop.examples;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.StringTokenizer;
- 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.mapred.FileInputFormat;
- import org.apache.hadoop.mapred.FileOutputFormat;
- import org.apache.hadoop.mapred.JobClient;
- import org.apache.hadoop.mapred.JobConf;
- import org.apache.hadoop.mapred.MapReduceBase;
- import org.apache.hadoop.mapred.Mapper;
- import org.apache.hadoop.mapred.OutputCollector;
- import org.apache.hadoop.mapred.Reducer;
- import org.apache.hadoop.mapred.Reporter;
- import org.apache.hadoop.mapred.TextInputFormat;
- import org.apache.hadoop.mapred.TextOutputFormat;
- public class WordCount {
- public static class Map extends MapReduceBase implements
- Mapper<LongWritable, Text, Text, IntWritable> {
- private final static IntWritable one = new IntWritable();
- private Text word = new Text();
- public void map(LongWritable key, Text value,
- OutputCollector<Text, IntWritable> output, Reporter reporter)
- throws IOException {
- String line = value.toString();
- StringTokenizer tokenizer = new StringTokenizer(line);
- while (tokenizer.hasMoreTokens()) {
- word.set(tokenizer.nextToken());
- output.collect(word, one);
- }
- }
- }
- public static class Reduce extends MapReduceBase implements
- Reducer<Text, IntWritable, Text, IntWritable> {
- public void reduce(Text key, Iterator<IntWritable> values,
- OutputCollector<Text, IntWritable> output, Reporter reporter)
- throws IOException {
- int sum = ;
- while (values.hasNext()) {
- sum += values.next().get();
- }
- output.collect(key, new IntWritable(sum));
- }
- }
- public static void main(String[] args) throws Exception {
- JobConf conf = new JobConf(WordCount.class);
- conf.setJobName("wordcount");
- conf.setOutputKeyClass(Text.class);
- conf.setOutputValueClass(IntWritable.class);
- conf.setMapperClass(Map.class);
- conf.setCombinerClass(Reduce.class);
- conf.setReducerClass(Reduce.class);
- conf.setInputFormat(TextInputFormat.class);
- conf.setOutputFormat(TextOutputFormat.class);
- FileInputFormat.setInputPaths(conf, new Path(args[]));
- FileOutputFormat.setOutputPath(conf, new Path(args[]));
- JobClient.runJob(conf);
- }
- }
首先进行编译:
- javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d WordCount ./WordCount/WordCount.java
然后压包
- jar -cvf wordcount.jar org/*
在复制到hadoop的工作目录下
然后在hadoop工作目录下面新建一个input目录 mkdir input,在目录里面新建一个文件vi file1,输入以下内容:
hello world
hello hadoop
hello mapreduce
,把该文件上传到hadoop的分布式文件系统中去
- ./bin/hadoop fs -put input/file* input
(6)然后我们开始执行
- ./bin/hadoop jar wordcount.jar org.apache.hadoop.examples.WordCount input wordcount_output
(7)最后我们查看运行结果
- ./bin/hadoop fs -cat wordcount_output/part-r-00000
参考:
http://cardyn.iteye.com/blog/1356361
https://blog.csdn.net/qichangleixin/article/details/43376587
二.往hdfs写数据
java代码
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.fs.FileSystem;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.IOUtils;
- import java.io.*;
- import java.net.URI;
- /**
- * blog: http://www.iteblog.com/
- * Date: 14-1-2
- * Time: 下午6:09
- */
- public class AppendContent {
- public static void main(String[] args) {
- String hdfs_path = "input/file1";//文件路径
- Configuration conf = new Configuration();
- conf.setBoolean("dfs.support.append", true);
- String inpath = "./append.txt";
- FileSystem fs = null;
- try {
- fs = FileSystem.get(URI.create(hdfs_path), conf);
- //要追加的文件流,inpath为文件
- InputStream in = new
- BufferedInputStream(new FileInputStream(inpath));
- OutputStream out = fs.append(new Path(hdfs_path));
- IOUtils.copyBytes(in, out, , true);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
注意指定的hdfs路径,用hdfs://localhost:9000/input/路径一直不行,不知道什么原因。
编译
- javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d ./classes ./my_append/AppendContent.java
压包
- jar -cvf ./my_jar/append.jar ./classes/*
运行
- ./bin/hadoop jar ./my_jar/append.jar AppendContent
AppendContent是类的名字
查看
- ./bin/hdfs dfs -cat input/*
或者代码可以改为通过args传参的方式传入hdfs路径, 方便多进程操作
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.fs.FileSystem;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.IOUtils;
- import org.apache.hadoop.fs.FSDataInputStream;
- import org.apache.hadoop.fs.FSDataOutputStream;
- import java.io.*;
- import java.net.URI;
- /**
- * blog: http://www.iteblog.com/
- * Date: 14-1-2
- * Time: 下午6:09
- */
- public class AppendContent {
- public static void main(String[] args) {
- //String hdfs_path = "input/file1";//文件路径
- String hdfs_path = args[];
- Configuration conf = new Configuration();
- conf.setBoolean("dfs.support.append", true);
- //String inpath = "./append.txt";
- FileSystem fs = null;
- try {
- fs = FileSystem.get(URI.create(hdfs_path), conf);
- FSDataOutputStream out = fs.append(new Path(hdfs_path));
- String s="";
- for(int i=;i<;i++)
- {
- for(int j=;j<;j++)
- {
- s+='a';
- }
- int readLen = s.getBytes().length;
- out.write(s.getBytes(), , readLen);
- }
- //int readLen = "0123456789".getBytes().length;
- //while (-1 != readLen)
- //out.write("0123456789".getBytes(), 0, readLen);
- //要追加的文件流,inpath为文件
- //InputStream in = new
- // BufferedInputStream(new FileInputStream(inpath));
- //OutputStream out = fs.append(new Path(hdfs_path));
- //IOUtils.copyBytes(in, out, 4096, true);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
编译与压包命令同上,执行命令如下
- ./bin/hadoop jar ./my_jar/append.jar AppendContent input/file1
参考:https://blog.csdn.net/jameshadoop/article/details/24179413
https://blog.csdn.net/wypblog/article/details/17914021
脚本
- #!/bin/bash
- #开始时间
- begin=$(date +%s%N)
- for ((i=; i<;i++))
- do
- {
- ./bin/hadoop jar ./my_jar/append.jar AppendContent input/file${i}
- }
- done
- wait
- #结束时间
- end=$(date +%s%N)
- #spend=$(expr $end - $begin)
- use_tm=`echo $end $begin | awk '{ print ($1 - $2) / 1000000000}'`
- echo "花费时间为$use_tm"
二. java在ext3中的测试
程序
- import java.io.*;
- import java.net.URI;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- import java.io.RandomAccessFile;
- public class Toext3 {
- public static void main(String[] args) {
- //String hdfs_path = "input/file1";//文件路径
- String ext3_path = args[];
- FileWriter writer = null;
- //String inpath = "./append.txt";
- try {
- String s="";
- for(int i=;i<;i++)
- {
- s="";
- for(int j=;j<;j++)
- {
- s+='b';
- }
- writer = new FileWriter(ext3_path, true);
- writer.write(s);
- System.out.println(ext3_path);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }finally {
- try {
- if(writer != null){
- writer.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
编译:
- javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d ./data/classes data/Toext3.java
运行
- java -cp ./data/classes/ Toext3 ./data/ext3/file0
在运行中,-cp指明class文件的路径,Toext3指出要运行的类
hadoop相关的更多相关文章
- [Linux] 安装JDK和Maven及hadoop相关环境
紧接上一篇,继续安装hadoop相关环境 JDK安装: 1. 下载,下面这两个地址在网上找的,可以直接下载: http://download.oracle.com/otn-pu ...
- Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop
Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop的相关介绍. Hive Pig和Hive的对比 摘要: Pig Pig是一种编程语言,它简化了Hadoop常见的工作 ...
- 一 hadoop 相关介绍
hadoop 相关介绍 hadoop的首页有下面这样一段介绍.对hadoop是什么这个问题,做了简要的回答. The Apache™ Hadoop® project develops open-sou ...
- Hadoop自学笔记(一)常见Hadoop相关项目一览
本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误 ...
- Hadoop相关问题解决
Hadoop相关问题解决 Hive 1.查询hivemeta信息,查到的numRows为-1 集群厂商 集群版本 是否高可用 是否开启认证 cdh 不限 不限 不限 在hivemeta库中可以通过以下 ...
- Hadoop相关日常操作
1.Hive相关 脚本导数据,并设置运行队列 bin/beeline -u 'url' --outputformat=tsv -e "set mapreduce.job.queuename= ...
- Hadoop 相关链接
Apache 软件下载 http://mirror.bit.edu.cn/apache/ 相关文档链接: Apache Hadoop 2.5.2 http://hadoop.apache.org ...
- 大数据及hadoop相关知识介绍
一.大数据的基本概念 1.1什么是大数据 互联网企业是最早收集大数据的行业,最典型的代表就是Google和百度,这两个公司是做搜索引擎的,数量都非常庞大,每天都要去把互联网上的各种各样的网页信息抓取下 ...
- Hadoop相关基础知识
因为个人对这块的知识也不熟悉,所以大多内容来源于网络. 1. Hadoop项目框架 2. Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以 ...
- Hadoop相关笔记
一. Zookeeper( 分布式协调服务框架 ) 1. Zookeeper概述和集群搭建: (1) Zookeeper概述: Zookeeper 是一个分布式 ...
随机推荐
- POJ1390 Blocks 【动态规划】
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4173 Accepted: 1661 Descriptio ...
- 项目部署在windows下的tomcat里
打包放在webapps 目录下,web的改成ROOT ok!!!
- Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
Batch Normalization Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应 ...
- HTML iframe 和 frameset 的区别
转自:http://www.cnblogs.com/polk6/archive/2013/05/24/3097430.html HTML iframe 和 frameset 的区别 iframe 和 ...
- 基本类型转换成NSNumber类型
int i=100; float f=2.34; NSNumber *n1=[NSNumber numberWithInt:i]; NSNumber *n2=[NSNumber numberWithF ...
- caffe下python环境的编译
安装python所需的依赖包 (1)sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-n ...
- 个人对于React的Diff算法的一点疑问(待更新)
本人对于Diff算法也并未做深入研究,只是大概的看过一些博文了解了些原理,但依然有了如下疑问 : 对于vdom所表示的对象中,若在该oldObj和newObj之间,发现一个元素节点所表示的子对象不见了 ...
- ViewPager滑动到最后一页再向左滑动进入主界面
在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1 ...
- 用私有构造器或枚举类型强化Singleton
Singleton指只有一个实例的类,只能被创建一次. 在Java1.5之前实现Singleton有两种方式,都是将构造器设为private并导出公有的静态成员实例. 第一种方式将公有的静态成员实例设 ...
- Codeforces Round #499 (Div. 2) D. Rocket_交互题_二分
第一次作交互题,有点不习惯. 由于序列是循环的,我们可以将一半的机会用于判断当前是否是在说谎,另一半的机会用于二分的判断. 对于判断是否实在说谎,用1判断即可.因为不可能有比1还小的数. 本题虽然非常 ...