map的输出数就是分区数,同时也是reduce的输入。

大的集合变成小的集合就是归约算法

map reduce八个步骤:

1 将输入文件按照一定的规则(这个跟你使用的输入格式化器有关系)

2 定义自己的map函数逻辑。生成新的key,value对

3 对map的输出做分区(具体分区怎么定,怎么玩,谁决定)

4 对不同分区的数据,按照key进行排序分组,相同的key的value放到一个集合当中。

5 分组后的数据进行归约(将大的集合分成小的集合。)

6 按照多个map任务,根据不同的分区copy到不同的reduce节点。

7 对多个map任务的输出,进行合并排序。写reduce函数自己的逻辑,对输入的key,value

  处理,转换成新的key,value输出。

8 把reduce的输出保存到文件中

RPC机制

RPC通信机制

java基本类型与Hadoop常见基本类型的对照

 

LongWritable

Integer IntWritable

Boolean BooleanWritable

Text

其实就是对象的序列化和反序列化的过程而已。

性能调优的一些基础知识。垃圾回收机制与hadoop的

comparable接口,具有可比性。

统计每个加盟商结算金额的总数。

map函数: k1,v1 一行表示加盟商的一条记录

       

         

reduce函数:

       

       

hadoop的acl access control list

   

要点1 :

要点2 :

  导出jar时候需要指定MainClass为上述FmAccountSettltCount

--如果改了ip地址就比较麻烦了

update user set host='master' where user='root';

update user set host='192.168.80.147' where user='root';

部署hive出现几次问题。

1 密码没改

2 hive-site.xml xml文件中文问题

3 mysql驱动jar包copy错了。

hive --service metastore &

--可能是同时启动多个进程导致的。

in thread "main" org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.

hive --service hiveserver &

hadoop fs -chmod -R 777 /tmp

hive -h master -p 10000

看计数器的输出可以看你的mapreduce 的运行状态

舆情监督

context获取自定义计数器

如果combine可以有用的话,可以减少

reduce的输入,那么也就可以减少copy

数据(map的输出都得通过网络传输到reduce节点上,如果有多少个分区就有多少个reduce)

数据量变小了,传送到reduce端的数据量变小了,

传输时间变短,作业的整体时间变少。

为什么combiner不做为MR运行的标配,而是可选步骤?

因为不是所有的算法都适合使用

Combiner这个阶段已经处理完成了reduce操作,

为什么reduce还要执行reduce操作。

这是因为combine发生在map端,

处理一个任务所接收的文件中的数据,

不能跨map任务执行。

而reduce可以接收多个map的输出。

partioner :分区怎么整。

自定义分区。

是对map的输出进行分区操作。

分区文件不同的。

分区的作用:

1 根据业务需求,产生多个输出文件

2 多个reduce任务在运行,可以提搞job运行的效率,

任务: 1 自己写个分区的mapreduce

      2 FileSystem操作hdfs

      3 自定义排序。我们可以将key进行打包。

       

        我们只要将key定义可比性(compareTo 方法)

         

           

可以设置reduce的tasksize为0表示不经过reduce步骤。

我们可以指定新的map任务输入格式化器。

按照key进行排序,分组:将相同key的value放到同一组中。除了这个之外

我们可以自定义分组。

(byte[]first,int firstStart,int firstPos,

byte[]second,int secondStart,int secondPos)

自定义了partion分区类,可以定义

reduceTasks由谁决定?

我怎么知道我需要有几个reduce?

分区之后再排序:

分成多个区之后,每个分区中进行sort操作。

如果是排完序之后再分区就会比较慢了。

网络传输:map的输出需要传输给reduce节点。可以在

copy and merge equals shuffle

map reduce 常见算法:

单词计数

数据去重功能:

排序 Top K,取最值问题。

   

   

   

   

   

   

     

setNumberReduceTasks():

投影

1 hash表中存储的值都是不一样的,也就是不允许重复

 

Zookeeper :

zk可以保证数据在集群之间的数据的事务性一致性。

ACID

如何搭建Zookeeper集群。

  结构: 服务器集群不小于三个节点,要求各服务器

  之间系统时间保持一致。

  选举产生的leader

 

 

hadoop运行机制

namenode单点故障

hadoop HA

hadoop性能调优。

mapreduce执行流程。

RPC 原理

MapReduce+Hive

集群的瓶颈是啥?

1 磁盘IO,指令和数据都得经过集群中的master。

netstat -an

<script type="text/javascript" id="wumiiRelatedItems"> </script>

this.p={ m:2, b:2, loftPermalink:'', id:'fks_087070081094085068082087<wbr>083069072084080068086081<wbr>080065084095', blogTitle:'hadoop学 笔记(笔记比较乱,随性而写,写到哪算哪)', blogAbstract:'

map的输出数就是分区数,同时也是reduce的输入。

大的集合变成小的集合就是归约算法

map reduce八个步骤:

1 将输入文件按照一定的规则(这个跟你使用的输入格式化器有关系)

2 定义自己的map函数逻辑。生成新的key,value对

3 对map的输出做分区(具体分区怎么定,怎么玩,谁决定)

', blogTag:'', blogUrl:'blog/static/21727620920151111238378', isPublished:1, istop:false, type:0, modifyTime:0, publishTime:1422767558378, permalink:'blog/static/21727620920151111238378', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, currentRecomBlog:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'', visitorCity:'', visitorNewUser:false, postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'JAVA软件工程师,有扎实的Java基础,熟悉JavaEE技术,对框架的底层原理熟悉,学习能力强。', hmcon:'0', selfRecomBlogCount:'0', lofter_single:'' }      {list a as x}    {if !!x}
    {if x.visitorName==visitor.userName}  {else}  {/if}    

     {if x.moveFrom=='wap'} 
     {elseif x.moveFrom=='iphone'}      {elseif x.moveFrom=='android'}      {elseif x.moveFrom=='mobile'} 
     {/if}     ${fn(x.visitorNickname,8)|escape}    
 {/if} {/list}      {if !!a}    ${fn(a.nickname,8)|escape}

    ${a.selfIntro|escape}{if great260}${suplement}{/if}