hadoop(一)
1 环境熟悉
安装jdk、hadoop
配置xml文件,启动伪分布式
运行example-jar,测试mapreduce程序
2 mapreduce编程
使用eclipse开发mapreduce程序,导出jar包
注意在eclipse下也可以运行mapreduce程序,相当于单机的hadoop
将数据放入hdfs,运行jar包,得到输出结果
3 安装使用hive和hbase
1 环境熟悉
hadoop提供binary和src两种类型的包。src可以自己定制编译
#登陆服务器
ssh username@IP
#解压、环境变量配置
java中的classpath
#配置xml、开启伪分布式
./sbin/start-hdfs.sh 开启hdfs
JPS是JDK 1.5提供的一个显示当前所有java进程pid的命令.
JPS查看是否已经启动伪分布式,查看是否有namenode等进程
#拷贝jar包到服务器,使用scp
scp myJar.jar username@IP:path
#运行jar包
hadoop jar input output
#拷贝结果到home目录,使用more查看
hdfs dfs -cat output/* > /home/result
简答的测试使用
echo "world my life" > 1.txt
echo "world my wife save me" > 2.txt
hdfs dfs -put input/* input
hdfs dfs -rm -r output
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output
hdfs dfs -cat output/*
运行结果
me 1
my 2
save 1
wife 1
world 2
hdfs常用命令:
hdfs dfs -rm -r directory 删除目录 -ls directory 输出目录信息
hdfs dfs -put /yourMaterial input 移动文件到hdfs
可以使用webUI查看程序的运行情况,对应的hadoop服务器的IP,端口19888、50030、50070等,可以查看core-site.xml文件获知。
注意:每次再次运行jar,需要删除output文件夹或者更改输出文件夹的位置!
2 mapreduce编程
研读API,了解The Hadoop MapReduce framework
http://hadoop.apache.org/docs/stable/api/overview-summary.html
mapreduce的过程
输入inputformat>map>combiner>partitioner>reducer>outputformat
自定义的键、值的数据类型
实现WritableComparable接口,不需要比较,也可以只实现Writable接口
public class T implements WritableComparable <T>
重写write、readfields、compareTo方法
自定义的输入输出格式
InputFormat和RecordReader
InputFormat>InputSplit
one map task for each InputSplit generated by the InputFormat
OutputFormat和RecordWriter
job.setInputFormatClass(myInputFormat.class);
mapper
covert input key/value pairs to a set of intermediate key/value pairs.
设置自定义的mapper类
job.setMapperClass(myMapper.class);
输出使用
context.write(word, one);
可以通过context获取的参数,context是环境对象参数
combiner
定制Combiner来减少网络数据传输,combiner将mapper产生的中间对进一步合并再传给reducer,注意输入输出的键值对类型要相同。
设置自定义的combiner类(继承自reducer类)
job.setCombinerClass(myReducer.class);
partitioner
改变Map[combiner]中间结果到Reduce节点的分配方式
自定义
Job. setPartitionerClass(NewPartitioner)
reducer
输入:key iterable
由mapper或者combiner产生的键值对,按照key值分发给reducer,同一个key肯定发往同一个reducer,值存在values中,需要使用iterator读取。
设置自定义的reducer类
job.setReducerClass(myReducer.class);
编程
eclipse
其实eclipse不好用,智能提示太少,导入jar包不方便。
准备工作:
在项目lib中设置外部jar。五个文件夹内的jar common common/lib hdfs mapreduce yarn
设置运行时的输入参数
在run中设置run时的参数configuration,设置输入确定input、output,因为在程序中会获取命令行参数作为input、output路径。
导出jar包
export相应的jar包,选择main入口,以使用jar包在分布式的集群环境下运行。
使用intelliJ
在project structure中设置lib、jar导出
在run configuration中设置run时的参数
编写MapReduce程序:一个Map函数,一个Reduce函数,一个主函数
#linux 命令#
man <command> 查看linux命令
ssh username@IP 远程登陆linux服务器
more Press space to continue, 'q' to quit.最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
tar 打包和解压缩命令,将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
tar -zxvf 解压命令
管道 使用管道输出文件echo "world my life" > 1.txt
history 罗列历史命令
使用tree命令查看文件目录结构
hadoop(一)的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 初识Hadoop、Hive
2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...
- hadoop 2.7.3本地环境运行官方wordcount-基于HDFS
接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...
- hadoop 2.7.3本地环境运行官方wordcount
hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
- Hadoop 2.x 生态系统及技术架构图
一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...
- Hadoop的安装与设置(1)
在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...
- 基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...
随机推荐
- Ubuntu下的截图工具
转载自:http://os.yesky.com/88/8733088.shtml 相信大家对于屏幕截图(或称抓图)应该不会陌生,在Windows平台上,我们可以使用许多第三方的专业抓图软件如SnagI ...
- linux内核数据结构之链表
linux内核数据结构之链表 1.前言 最近写代码需用到链表结构,正好公共库有关于链表的.第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域.后来看代码注释发现该 ...
- 【IOS开发】创建XML文件
- (void)viewDidLoad { [super viewDidLoad]; NSString *path = [[NSBundle mainBundle] pathForResource:@ ...
- linux 之 snprintf函数用法
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...); 函数说明:最多从源串中拷贝n-1个字符到 ...
- cocos2d(CCSprite绑定不规则刚体与精灵一起移动)
对于不规则的精灵我们可以借助PhysicsEditor来制作shape , 对于地图可以使用Tiled软件制作瓷砖地图. 今天主要记录一下如何把CCSprite与不规则刚体进行绑定,然后一起移动 // ...
- ie7,8下__flash__addCallback报错原因及解决方案
首先附张图,以直观说明错误的现象:(ie7.8)
- Ruby的对象模型
目录 备注对象模型无图无真相基本规则代码示例如何修改Singleton Class?如何修改类型,如Child?类型方法是特殊的实例方法,这些方法定义在类型的Singleton Class中.备注 备 ...
- 使用 NPC,NPCManager 在 XNA 中创建 NPC
使用 NPC,NPCManager 在 XNA 中创建 NPC 平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐 ...
- iOS状态变更
iOS应用状态变更 应用启动周期 当应用启动时,它从未运行状态到活跃或后台状态,简单地过渡未激活状态.作为启动周期的一部分,系统为应用创建一个过程和主进程并在主进程上调用应用的主函数.来自你的Xcod ...
- mysql数据类型简介
MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种. 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型.下面做个对比: MyISAM表 ...