hadoop基础学习
MR系类:
①hadoop生态
>MapReduce:分布式处理
>Hdfs:hadoop distribut file system
>其他相关框架
->unstructured data:收集日志 flume,scribe
->structured data:sqoop hdfs与关系型数据库相互转换
->OLTP:HBASE(低延时) online transection process
->monitor/manage:监控集群状态
->Hight level interfaces:JAQL HIVE
->support:
->workflow:
->more Hight level interfaces:封装了算法的高级接口 数据挖掘算法BI
②hadoop:分布式存储和计算平台
③hadoop核心系统:
>hdfs:
->主从分布式:
namenode(主节点):管理从节点,提供API,管理文件与block,block与datanode之间的关系。(存储单位为block)
datanode(从节点):存储数据,文件被分成block存储在磁盘,同时block是有副本的。
>mapReduce:
->主从分布式:
jobTracker(主节点):提供api,分配任务给tasktracker,监控其执行情况
taskTracker(从节点):执行分配的计算任务。
④hadoop分布式特点:
>扩容能力:
>成本低:低廉主机,团体集群。
>高效率:并行执行
>可靠性:自动维护数据副本
⑤hadoop集群:
>伪分布:
①安装jdk,hadoop软件
>真实分布:
⑥HDFS学习笔记:
>概念:
->dfs:分布式文件系统,适合于一次写入多次查询的情况,不支持并发写,不适合小文件。
->namenode:维护和管理目录系统,
->HDFS:
->namenode:元数据(目录数据):
->fsimage:目录数据
->edit:用户操作的事务,当事务完成后,会将新的目录数据加入fsimage.
->secondaryNode:合并fsimage与edit
->datanode:物理数据(原始数据):物理数据本身
->文件块block:默认大小64M,当不足64M时,占用实际的大小的物理空间。
->replication:副本,默认三个。优先放在本机的datanode中。
->关于HDFS的HA:
->在配置文件中设置多个namenode的copy
->secondaryNode:将edit合并到fsimage。
>shell接口:
->hadoop fs 命令 -ls,-lsr,-put,-get,-text等
->hadoop fs ls = hadoop fs -ls hdfs://hadoop:9000/
>java接口:
->IOUtil连接普通文件系统和HDFS
->FileSystem:hds中定义的文件系统对象
>RPC远程过程调用:Remote process call 不同进程间的方法调用
->客户端调用服务器端实现VersionedProtocol协议的接口中的方法。
->hadoop中存在的5的服务进程,就是RPC的服务器端
The NameNode controls two critical tables:
1) filename->blocksequence (namespace) 外存中,静态的,存放在fsimage
2) block->machinelist ("inodes") 内存中,namenode启动的时候重建。
hdfs的唯一一个核心类:FileSystem
⑦MapReduce:
八个步骤:
1>Map
1.1>解析hdfs中的文件,每行数据形成<k1,v1> :k1为每行开始位置,v1为每行的内容
1.2>覆盖map(),接受1.1产生的<k1,v1>进行处理,转换成新的<k2,v2> :如对每行的数据即v1进行拆分,就可以得到多个v2
1.3>对1.2中输出的数据<k2,v2>进行分区,默认为1个:
1.4>对1.3中输出的数据<k3,v3>进行排序(按照k3),分组(相同key的不同value放在一个集合中),输出<k4,{v4}>
1.5>对1.4中输出的数据进行规约。
2>Reduce
2.1>多个map任务的输出,按照不同的分区,通过网络 copy到不同的reduce节点中:
2.2>对2.1中获得的数据,进行合并排序,覆盖reduce函数,接受集合数据,统计k4对应集合中所有值的和,输出<k5,v5>:
2.3>对2.2中产生的<k5,v5>的输出,写回hdfs中。
Hadoop数据类型:
Hadoop key/value数据必须实现的接口:
①writeable接口:
public interface Writable {
* Serialize the fields of this object to <code>out</code>.
void write(DataOutput out) throws IOException;
* Deserialize the fields of this object from <code>in</code>.
void readFields(DataInput in) throws IOException;
}
Hadoop key数据必须实现的接口:
②Comparable接口:
③WritableComparable接口:
comparaTo()方法
1>序列化和反序列化必须实现一下几个方法:
①equals()
②hashcode()
③tostring()
④必须有无参构造方法,为了方便反射创建对象。
2>序列化:将结构化对象转化为字节流,以便在网络传输或者保存在磁盘进行永久存储。
·反序列化:将序列化字节流,反序列化为结构化对象。
为了实现对序列化字节对象的直接比较,
①comparator接口:
hadoop基础学习的更多相关文章
- Hadoop基础学习(一)分析、编写并执行WordCount词频统计程序
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jiq408694711/article/details/34181439 前面已经在我的Ubuntu ...
- Hadoop基础学习框架
我们主要使用Hadoop的2个部分:分布式文件存储系统(HDFS)和MapReduce计算模型. 关于这2个部分,可以参考一下Google的论文:The Google File System 和 Ma ...
- hadoop基础学习---数据管理策略
上图中的ABCDE都代表默认大小64M的数据块 nameNode与dataNode之间有一个心跳机制,datanode每隔多秒钟定期的发送心跳到nameNode
- hadoop基础学习---基本概念
1.组成部分HDFS和MapReduce 2.HDFS这几架构
- 零基础学习hadoop到上手工作线路指导
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- 零基础学习Hadoop
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce(转)
零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce:http://www.aboutyun.com/thread-7567-1-1.html mapreduce学习目录总结 ...
- 零基础学习hadoop开发所必须具体的三个基础知识
大数据hadoop无疑是当前互联网领域受关注热度最高的词之一,大数据技术的应用正在潜移默化中对我们的生活和工作产生巨大的改变.这种改变给我们的感觉是“水到渠成”,更为让人惊叹的是大数据已经仅仅是互联网 ...
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
随机推荐
- NFS网络文件系统方案
1,关闭防火墙和selinuxiptables -Fsystemctl stop firewalldsystemctl disable firewalldsetenforce 0 服务器系统 名 ...
- 【转载】深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- Git创建本地分支并关联远程分支(二)
创建本地分支git branch 分支名 例如:git branch dev,这条命令是基于当前分支创建的本地分支,假设当前分支是master(远程分支),则是基于master分支创建的本地分支dev ...
- GDI 画笔(9)
使用现有画笔 Windows 提供三种备用画笔(Stock Pen):BLACK_PEN(黑色画笔).WHITE_PEN(白色画笔).NULL_PEN(不绘制任何图形的画笔). 调用 GetStock ...
- 【Leetcode】【简单】【14最长公共前缀】【JavaScript】
题目 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...
- 使用yum update更新文件系统时不更新内核的方法
CentOS使用yum update更新时不升级内核 cp /etc/yum.conf /etc/yum.confbak 方法一.修改yum的配置文件 vi /etc/yum.conf 在[m ...
- php进程daemon化的正确做法
[原文地址:https://blog.ti-node.com/blog...] daemon 音标 : ['di:mən] , 中文含义为守护神或精灵的意思 . 其实它还有个意思 : 守护进程 . 守 ...
- python orm框架-----SQLALchemy-查询篇
似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识.下面看 ...
- 最简单的基于FFmpeg的移动端样例:IOS 推流器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- Cloud Card是否能干掉App
算下来有一年没写blog了.这一年算是潜心做一件事情,随着云OS 3.0已公布.总算能够向外界表达了我们想做个啥,非常多人也開始质疑,Cloud Card究竟是个啥?云OS 3.0算不算自主研发的OS ...