Hadoop1.0.4
2015-02-01 17:20:32 4 举报
AI智能生成
hadoop1.0.4
作者其他创作
大纲/内容
RPC
不同进程间的远程方法调用
Server
实现接口VersionedProtocol
RPC.getServer()启动RPC服务
同时启动jetty server
Client
根据host/port, 利用java反射得到VersionedProtocol的代理
利用代理请求server
1, Getting Started
Core
HDSF
存储
MapReduce
分析处理
由Google开发,用于构建搜索引擎的索引
WordCount
遍历所有的input输入文件,针对每个文件:
用map遍历每一行,然后对单个文件做combine
最终,把每个文件的reduce结果合在一起做reduce
WordCount中combine的作用跟reduce一样
发展历程
是Lucene的一部分,起源于Apache Nutch(搜索引擎)
Hadoop各版本下载
HDFS
Block
文件分块
64M
NameNode
保存文件系统的目录信息、文件信息,以及文件对应的分块信息
NameNode实现了ClientProtocol接口
但是client编程不直接使用ClientProtocol代理,而是使用FileSystem类
FileSystem在client端实际使用DFSClient,它是NameNode的代理对象
hadoop2.x以前NameNode存在单点问题
DateNote
存储Block
HA策略
NameNode一旦宕机,整个文件系统无法工作
Hadoop2.x开始,HDFS支持NameNode的active-standy模式
JobTracker
接收作业提交,监控作业运行
将任务分发到TaskTracker节点
TaskTracker
控制Map/Reduce任务中当前节点的运行
集群
master
NameNode
core_site.xml (单机/集群)
fs.default.name使用hostname
core_site.xml
hadoop.tmp.dir
Web管理页面:50070
JobTracker
mapred-site.xml(单机/集群)
mapred.job.tracker要使用hostname
Web管理页面:50030
Slave
DateNode
文件系统浏览: 50075
TaskTracker
core_site.xml (集群时)
fs.default.name使用master的hostname
mapred-site.xml(集群时)
mapred.job.tracker使用master的hostname
ssh
master、slave必须用相同的用户名运行hadoop
将master的~/.ssh/id_rsa.pub拷贝追加到
slave的~/.ssh/authorized_keys
在master节点上:
scp ~/.ssh/id_rsa.pub hadoop.slave ~/.ssh/authorized_keys
验证: ssh hadoop.slave
修改master的配置文件masters
hostname
/etc/hostname
hostname hadoop.master
/etc/hosts
192.168.44.128 hadoop.master
如果hadoop运行在Linux上,而你是从其它机器上访问它,
则在其它机器上也需要这样配置。
windows: C:\Windows\System32\Drivers\etc\hosts
/etc/sysconfig/network
HOSTNAME=hadoop.master
Hadoop生态
Pig
以类似SQL的方式管理hadoop
HBase
hadoop database
NoSQL典型代表
使用shell/web/api访问
分布式、面向列的开源数据库
Hive
SQL到Map-Reduce映射器
把你输入的SQL转换成Map-Reduce
SQL-92标准,不支持SQL-99
shell, jdbc, web
ZooKeeper
管理员
Sqoop
关系型数据库--hadoop之间数据交换
Avro
数据序列化工具
Chukwa
数据采集、分析,然后写入hadoop
Cassandra
NoSQL
与HBase相似
Facebook贡献
没落了,被HBase抢尽风头
2, MapReduce
MapReduce Tutorial
(input) -> map ->
-> combine ->
-> reduce -> (output)
command
hadoop jar hadoop-examples.jar wordcount
-files cachefile.txt
-libjars mylib.jar
-archives myarchive.zip
input output
bin\hadoop distcp
hdfs://nn1:8020/foo/bar
hdfs://nn2:8020/bar/foo
分布式拷贝
从一个节点拷贝到另外的节点
Api
Mapper/Reducer接口继承了Closeable接口,
提供了close()方法,用于资源回收
JobConf.setOutputKeyComparatorClass(Class)
可以让输入排序
JobConf
对job的描述
input路径/类型/format
output路径/类型/format
mapper/reducer
JobClient
提交、监控job
与JobTracker通信
job执行后,会在output目录下生成_logs目录
用于保存job执行日志
bin/hadoop job -history all output目录
执行job
JobClient.runJob(job)
提交job并等待job执行完毕
JobClient.submitJob(job)
提交job并马上返回,不等待
可以通过RunningJob获取job状态
Hadoop Stream
使用其它语言编写mapreduce
Hadoop Pipe
使用C API
3, HDFS
master/slave
data replication
NameNode(filename, NumReplicas, blockId)
/users/troy/data/part-0, r:1, {1,3}
/users/troy/data/part-1, r:1, {2,4}
WebHDFS REST API
url
webhdfs://:/
hdfs://:/
http://:/webhdfs/v1/?op=...
Command
0 条评论
下一页