资讯专栏INFORMATION COLUMN

hadoop入门语录

ThinkSNS / 502人阅读

摘要:台机器的机器名务必不同,后续会谈到机器名对于有很大的影响。分布式环境中客户端创建任务并提交。可选择配置,主要作用是在每一个执行完分析以后,在本地优先作的工作,减少在过程中的数据传输量。

使用场景:个人觉得最适合的就是海量数据的分析,其实Google最早提出MapReduce也就是为了海量数据分析。同时HDFS最早是为了搜索引擎实现而开发的,后来才被用于分布式计算框架中。

How to Use Hadoop & Tips

7台机器的机器名务必不同,后续会谈到机器名对于MapReduce有很大的影响。

以下是一个简单的Hadoop-site.xml的配置:

fs.default.name//你的namenode的配置,机器名加端口

hdfs://10.2.224.46:54310/

mapred.job.tracker//你的JobTracker的配置,机器名加端口

hdfs://10.2.224.46:54311/

dfs.replication//数据需要备份的数量,默认是三

1

hadoop.tmp.dir//Hadoop的默认临时路径,这个较好配置,然后在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令了。

/home/wenchu/hadoop/tmp/

mapred.child.Java.opts//java虚拟机的一些参数可以参照配置

-Xmx 512m

dfs.block.size//block的大小,单位字节,后面会提到用处,必须是512的倍数,因为采用crc作文件完整性交验,默认配置512是checksum的最小单元。

5120000

The default block size for new files.

hadoop-env.sh文件只需要修改一个参数:

# The java implementation to use. Required.

export JAVA_HOME=/usr/ali/jdk1.5.0_10

Masters中配置Masters的ip或者机器名,如果是机器名那么需要在/etc/hosts中有所设置。

Slaves中配置的是Slaves的ip或者机器名,同样如果是机器名需要在/etc/hosts中有所设置。

范例如下:我这里配置的都是ip.

根据每一个Slave的Java_HOME的不同修改其hadoop-env.sh。

可以通过使用命令:hadoop dfsadmin –report就可以看到各个节点存储的情况

如果在新增了节点或者删除节点的时候出现了问题,首先就去删除Slave的hadoop.tmp.dir,然后重新启动试试看,如果还是不行那就干脆把Master的hadoop.tmp.dir删除(意味着dfs上的数据也会丢失),如果删除了Master的hadoop.tmp.dir那么就需要重新namenode –format了。

Master和Slave机器上的/etc/hosts中必须把集群中机器都配置上去,就算在各个配置文件中使用的是ip。这个吃过不少苦头,原来以为如果配成ip就不需要去配置host,结果发现在执行Reduce的时候总是卡住,在拷贝的时候就无法继续下去,不断重试。另外如果集群中如果有两台机器的机器名如果重复也会出现问题。

然后执行Master上的start-all.sh,这个命令可以直接执行,因为在6已经添加到了path路径了,这个命令是启动hdfs和mapreduce两部分,当然你也可以分开多带带启动hdfs和mapreduce,分别是bin目录下的start-dfs.sh和start-mapred.sh。

Map的个数通常默认和HDFS需要处理的blocks相同

这部分内容其实可以通过命令的Help以及介绍了解,我主要侧重于介绍一下我用的比较多的几个命令。

Hadoop dfs 这个命令后面加参数就是对于HDFS的操作,和Linux操作系统的命令很类似,例如:Hadoop dfs –ls 就是查看/usr/root目录下的内容,默认如果不填路径这就是当前用户路径Hadoop dfs –rmr xxx就是删除目录,还有很多命令看看就很容易上手

Hadoop dfsadmin –report 这个命令可以全局的查看DataNode的情况。Hadoop job 后面增加参数是对于当前运行的Job的操作,例如list,kill等

Hadoop balancer就是前面提到的均衡磁盘负载的命令。

1. 分布式环境中客户端创建任务并提交。

2. InputFormat做Map前的预处理,主要负责以下工作:

a) 验证输入的格式是否符合JobConfig的输入定义,这个在实现Map和构建Conf的时候就会知道,不定义可以是Writable的任意子类。

b) 将input的文件split为逻辑上的输入InputSplit,其实这就是在上面提到的在分布式文件系统中blocksize是有大小限制的,因此大文件会被划分为多个block。

c) 通过RecordReader来再次处理inputsplit为一组records,输出给Map。(inputsplit只是逻辑切分的第一步,但是如何根据文件中的信息来切分还需要RecordReader来实现,例如最简单的默认方式就是回车换行的切分)

3. RecordReader处理后的结果作为Map的输入,Map执行定义的Map逻辑,输出处理后的key,value对到临时中间文件。

4. Combiner可选择配置,主要作用是在每一个Map执行完分析以后,在本地优先作Reduce的工作,减少在Reduce过程中的数据传输量。

5. Partitioner可选择配置,主要作用是在多个Reduce的情况下,指定Map的结果由某一个Reduce处理,每一个Reduce都会有多带带的输出文件。(后面的代码实例中有介绍使用场景)

6. Reduce执行具体的业务逻辑,并且将处理结果输出给OutputFormat。

7. OutputFormat的职责是,验证输出目录是否已经存在,同时验证输出结果类型是否如Config中配置,最后输出Reduce汇总后的结果。

其实当你的数据量没有那么大的时候,这种分布式计算也就仅仅只是一个玩具而已,

Hadoop集群测试

首先这里使用上面的范例作为测试,也没有做太多的优化配置,这个测试结果只是为了看看集群的效果,以及一些参数配置的影响。

文件复制数为1,blocksize 5M

 

Blocksize 5M

 

文件复制数为1

 

测试的数据结果很稳定,基本测几次同样条件下都是一样。

测试结果可以看出一下几点:

1. 机器数对于性能还是有帮助的(等于没说^_^)。

2. 文件复制数的增加只对安全性有帮助,但是对于性能没有太多帮助。而且现在采取的是将操作系统文件拷贝到HDFS中,所以备份多了,准备的时间很长。

3. blocksize对于性能影响很大,首先如果将block划分的太小,那么将会增加job的数量,同时也增加了协作的代价,降低了性能,但是配置的太大也会让job不能较大化并行处理。所以这个值的配置需要根据数据处理的量来考虑。

4. 最后就是除了这个表里面列出来的结果,应该去仔细看输出目录中的_logs/history中的xxx_analysisjob这个文件,里面记录了全部的执行过程以及读写情况。这个可以更加清楚地了解哪里可能会更加耗时。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/3691.html

相关文章

  • 老肖语录 | 使用 Docker 做 CI 解惑

    摘要:年肖德时先生加入,担任内部工作组。老肖语录是肖德时先生推出的个人公众号栏目,他利用这个公众号记录自己创业路上的点点滴滴,不时会有精彩的技术感悟与分享,欢迎大家关注。 我今天看到一篇网友分享的 php 环境下的Docker持续集成案例。笔者大胆的试用后尝到了容器技术的甜头,也在文中提出了一个没有解决的困惑。 原来他是把代码放在容器外面,通过挂载目录的方法把代码加到容器里面运行的。这样虽然...

    luffyZh 评论0 收藏0
  • 大神 Linus Torvalds 语录

    摘要:空谈是不值钱的。有能力的人一直在干活,没能力的人一直在抱怨。这种结果将会是完全无意中产生的副作用。真正的质量意味着让程序员为他们写的代码自豪,参与到编写代码之中并把它当做自己个人的事情。这就是这些纸张的价值所在。 My name is Linus Torvalds and I am your god.我的名字是Linus Torvalds,我是你们的上帝。(在1998 Linux大会上...

    Aldous 评论0 收藏0
  • 切勿妄谈Hadoop,以及4个数据管道打造实践

    摘要:数据体积高达这种级别的数据仍然称不上大数据,当下的笔记本的内存都可以添加到了,而且许多工具并不是一次性将数据完全加载到内存的。大数据的有限价值今天我们几乎可以存储任何具有业务目的明显的数据,比如信用卡销售及问卷调查。 Hadoop只是运行某个通用计算的工具,正因为如此,在使用过程中你会受限于多种规则,比如所有计算都必须按照一个map、一个group by、一个aggregate或者这种计算序...

    chnmagnus 评论0 收藏0
  • “我只警告一次,下次我会直接忽略你发的垃圾,懂?”Linus 精彩炮轰语录集锦

    摘要:下次我会直接忽略你发的垃圾,懂以的咆哮量位居第三的是你要行动起来,对你应该管理的人施加压力。我只给出一个警告。 Linus Torvalds 想必大家并不陌生,不仅因为 Linux 之父的身份被人熟知,更是以火爆的脾气屡受争议,尤其是他在 2015 年曾对 NVIDIA 爆粗口、竖中指的行为...

    Yang_River 评论0 收藏0
  • 3 分钟带你走进视觉智能新时代 | 七牛云&美图 AI 共享日精彩语录

    摘要:月日下午,七牛云美图共享日在厦门举行,来自七牛云美图厦门大学罗普特等众位大咖齐聚一堂。七牛云美图共享日精华语录计算机识别是按照具体问题具体分析,具体场景具体分析。又称小牛汇共享日,是小牛汇举办的第一个系列活动。 时间机器、穿越星际的宇宙飞船、飞行汽车,几乎每一部科幻电影作品中都能发明点新东西。超现实技术在引起人们阵阵赞叹的同时,也在激励着人们思考如何将不可能变成可能。而在我们的生活当中...

    Jonathan Shieber 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<