文档库 最新最全的文档下载
当前位置:文档库 › hadoop常用命令

hadoop常用命令

hadoop常用命令
hadoop常用命令

hadoop常用命令

启动Hadoop

?进入HADOOP_HOME目录。

?执行sh bin/start-all.sh

关闭Hadoop

?进入HADOOP_HOME目录。

?执行sh bin/stop-all.sh

1、HDFS和maoReduce是hadoop的核心组成吧,也是hadoop的基础,我也是一直在学习这方面的知识,通过一些文档和视频教程进行学习。一句话描述下hadoop的HDFS:就是把大文件或大数据存放在很多节点的数据块中。文件、节点、数据块HDFS就是围绕着这三个词进行设计。

HDFS分布式文件系统是一种通过网络在多台主机上分享文件的文件系统,可让多机器上的多用户进行分享文件和存储空间。适用于一次写入多次查询的情况,不支持并发写的情况,

对于小数据不适合。

HDFS的shell操作也就是一些常用的类似linux的命令的学习,对HDFS的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对

HDFS 的操作命令类似于linux 的shell 对文件的操作,如ls、mkdir、rm 等。

-help [cmd] //显示命令的帮助信息

-ls(r) //显示当前目录下所有文件

-du(s) //显示目录中所有文件大小

-count[-q] //显示目录中文件数量

-mv //移动多个文件到目标目录

-cp //复制多个文件到目标目录

-rm(r) //删除文件(夹)

-put //本地文件复制到hdfs

-copyFromLocal //同put

-moveFromLocal //从本地文件移动到hdfs

-get [-ignoreCrc] //复制文件到本地,可以忽略crc校验

-getmerge //将源目录中的所有文件排序合并到一个文件中

-cat //在终端显示文件内容

-text //在终端显示文件内容

-copyToLocal [-ignoreCrc] //复制到本地

-moveToLocal

-mkdir //创建文件夹

-touchz //创建一个空文件

#hadoop fs -ls / 查看HDFS根目录

#hadoop fs -mkdir /test 在根目录创建一个目录test

#hadoop fs -mkdir /test1 在根目录创建一个目录test1

#echo -e 'hadoop second lesson' >test.txt

#hadoop fs -put ./test.txt /test

或#hadoop fs -copyFromLocal ./test.txt /test

#cd ..

#hadoop fs -get /test/test.txt .

或#hadoop fs -getToLocal /test/test.txt .

#hadoop fs -cp /test/test.txt /test1

#hadoop fs -rm /test1/test.txt

#hadoop fs -mv /test/test.txt /test1

#hadoop fs -rmr /test1

这些命令说实话我还真是无法全部消化,只能记下来,下次用的时候在查了。

1. 下面介绍下namenode,datenade,block,SecondaryNameNode

nameNode作用就是管理文件的目录结构,管理数据节点。名字节点维护两套数据,一套是文

件目录与数据块之间的关系,另一套是数据块与节点之间的关系

datenode的作用就是HDFS 中真正存储数据的。

DataNode 在

blocl就是HDFS存储数据的时候是按照block 为单位读写数据的。block 是hdfs 读写数据的

基本单位。默认是64M

SNN 只有一个职责,就是合并NameNode 中的edits 到fsimage 中。

2. HDFS 的java 访问接口:使用FileSystem api进行读写数据

3. HDFS的RPC机制:RPC 是远程过程调用(Remote Procedure Call),即远程调用其他虚拟

机中运行的javaobject。RPC 是一种客户端/服务器模式,那么在使用时包括服务端代码和客

户端代码,还有我们调用的远程过程对象。

1、查看指定目录下内容

hadoop dfs –ls [文件目录]

eg: hadoop dfs –ls /user/wangkai.pt

2、打开某个已存在文件

hadoop dfs –cat [file_path]

eg:hadoop dfs -cat /user/wangkai.pt/data.txt

3、将本地文件存储至hadoop

hadoop fs –put [本地地址] [hadoop目录]

hadoop fs –put /home/t/file.txt /user/t

(file.txt是文件名)

4、将本地文件夹存储至hadoop

hadoop fs –put [本地目录] [hadoop目录]

hadoop fs –put /home/t/dir_name /user/t

(dir_name是文件夹名)

5、将hadoop上某个文件down至本地已有目录下

hadoop fs -get [文件目录] [本地目录]

hadoop fs –get /user/t/ok.txt /home/t

6、删除hadoop上指定文件

hadoop fs –rm [文件地址]

hadoop fs –rm /user/t/ok.txt

7、删除hadoop上指定文件夹(包含子目录等)

hadoop fs –rmdir [目录地址]

hadoop fs –rmdir /user/t

8、在hadoop指定目录内创建新目录

hadoop fs –mkdir /user/t

9、在hadoop指定目录下新建一个空文件

使用touchz命令:

hadoop fs -touchz /user/new.txt

echo 'hello'>message.txt //写入文件内容

10、将hadoop上某个文件重命名

使用mv命令:

hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)

11、将hadoop指定目录下所有内容保存为一个文件,同时down至本地hadoop dfs –getmerge /user /home/t

12、将正在运行的hadoop作业kill掉

hadoop job –kill [job-id]

1、列出所有Hadoop Shell支持的命令

$ bin/hadoop fs -help

2、显示关于某个命令的详细信息

$ bin/hadoop fs -help command-name

3、用户可使用以下命令在指定路径下查看历史日志汇总

$ bin/hadoop job -history output-dir

这条命令会显示作业的细节信息,失败和终止的任务细节。

4、关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看$ bin/hadoop job -history all output-dir

5、格式化一个新的分布式文件系统:

$ bin/hadoop namenode -format

6、在分配的NameNode上,运行下面的命令启动HDFS:

$ bin/start-dfs.sh

bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave 上启动DataNode守护进程。

7、在分配的JobTracker上,运行下面的命令启动Map/Reduce:

$ bin/start-mapred.sh

bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。

8、在分配的NameNode上,执行下面的命令停止HDFS:

$ bin/stop-dfs.sh

bin/stop-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave 上停止DataNode守护进程。

9、在分配的JobTracker上,运行下面的命令停止Map/Reduce:

$ bin/stop-mapred.sh

bin/stop-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave 上停止TaskTracker守护进程。

DFSShell

10、创建一个名为/foodir 的目录

$ bin/hadoop dfs -mkdir /foodir

11、创建一个名为/foodir 的目录

$ bin/hadoop dfs -mkdir /foodir

12、查看名为/foodir/myfile.txt 的文件内容

$ bin/hadoop dfs -cat /foodir/myfile.txt

DFSAdmin

13、将集群置于安全模式

$ bin/hadoop dfsadmin -safemode enter

14、显示Datanode列表

$ bin/hadoop dfsadmin -report

15、使Datanode节点datanodename退役

$ bin/hadoop dfsadmin -decommission datanodename

16、bin/hadoop dfsadmin -help 命令能列出所有当前支持的命令。比如:

* -report:报告HDFS的基本统计信息。有些信息也可以在NameNode Web服务首页看到。

* -safemode:虽然通常并不需要,但是管理员的确可以手动让NameNode进入或离开安全模式。

* -finalizeUpgrade:删除上一次升级时制作的集群备份。

17、显式地将HDFS置于安全模式

$ bin/hadoop dfsadmin -safemode

18、在升级之前,管理员需要用(升级终结操作)命令删除存在的备份文件

$ bin/hadoop dfsadmin -finalizeUpgrade

19、能够知道是否需要对一个集群执行升级终结操作。

$ dfsadmin -upgradeProgress status

20、使用-upgrade选项运行新的版本

$ bin/start-dfs.sh -upgrade

21、如果需要退回到老版本,就必须停止集群并且部署老版本的Hadoop,用回滚选项启动集群

$ bin/start-dfs.h -rollback

22、下面的新命令或新选项是用于支持配额的。前两个是管理员命令。

* dfsadmin -setquota...

把每个目录配额设为N。这个命令会在每个目录上尝试,如果N不是一个正的长整型数,目录不存在或是文件名,或者目录超过配额,则会产生错误报告。

* dfsadmin -clrquota...

为每个目录删除配额。这个命令会在每个目录上尝试,如果目录不存在或者是文件,则会产生错误报告。如果目录原来没有设置配额不会报错。

* fs -count -q ...

使用-q选项,会报告每个目录设置的配额,以及剩余配额。如果目录没有设置配额,会报告none和inf。

23、创建一个hadoop档案文件

$ hadoop archive -archiveName NAME *

-archiveName NAME 要创建的档案的名字。

src 文件系统的路径名,和通常含正则表达的一样。

dest 保存档案文件的目标目录。

24、递归地拷贝文件或目录

$ hadoopdistcp

srcurl 源Url

desturl 目标Url

25、运行HDFS文件系统检查工具(fsck tools)

用法:hadoop fsck [GENERIC_OPTIONS] [-move | -delete | -openforwrite] [-files [-blocks [-locations |

-racks]]]

命令选项描述

检查的起始目录。

-move 移动受损文件到/lost+found

-delete 删除受损文件。

-openforwrite 打印出写打开的文件。

-files 打印出正被检查的文件。

-blocks 打印出块信息报告。

-locations 打印出每个块的位置信息。

-racks 打印出data-node的网络拓扑结构。

26、用于和Map Reduce作业交互和命令(jar)

用法:hadoop job [GENERIC_OPTIONS] [-submit ] | [-status ] | [-counter

] | [-kill ] | [-events <#-of-events>] |

[-history [all] ] | [-list [all]] | [-kill-task ] | [-fail-task ]

命令选项描述

-submit 提交作业

-status 打印map和reduce完成百分比和所有计数器。

-counter 打印计数器的值。

-kill 杀死指定作业。

-events <#-of-events> 打印给定范围内jobtracker接收到的事件细节。

-history [all] -history 打印作业的细节、失败及被杀死原因的细节。更多的关于一个作业的细节比如

成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看。

-list [all] -list all 显示所有作业。-list只显示将要完成的作业。

-kill-task 杀死任务。被杀死的任务不会不利于失败尝试。

-fail-task 使任务失败。被失败的任务会对失败尝试不利。

27、运行pipes作业

用法:hadoop pipes [-conf] [-jobconf, , ...] [-input ] [-output ] [-jar ] [-inputformat] [-map ] [-partitioner] [-reduce ] [-writer ]

[-program ] [-reduces ]

命令选项描述

-conf 作业的配置

-jobconf, , ... 增加/覆盖作业的配置项

-input 输入目录

-output 输出目录

-jar Jar文件名

-inputformatInputFormat类

-map Java Map类

-partitioner Java Partitioner

-reduce Java Reduce类

-writer Java RecordWriter

-program 可执行程序的URI

-reduces reduce个数

28、打印版本信息。

用法:hadoop version

29、hadoop脚本可用于调调用任何类。

用法:hadoop CLASSNAME

运行名字为CLASSNAME的类。

30、运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程(balancer)

用法:hadoop balancer [-threshold ]

命令选项描述

-threshold 磁盘容量的百分比。这会覆盖缺省的阀值。

31、获取或设置每个守护进程的日志级别(daemonlog)。

用法:hadoopdaemonlog -getlevel

用法:hadoopdaemonlog -setlevel

命令选项描述

-getlevel 打印运行在的守护进程的日志级别。这个命令内部会连接

http:///logLevel?log=

-setlevel 设置运行在的守护进程的日志级别。这个命令内部会连接http:///logLevel?log=

32、运行一个HDFS的datanode。

用法:hadoopdatanode [-rollback]

命令选项描述

-rollback 将datanode回滚到前一个版本。这需要在停止datanode,分发老的hadoop版本之后使用。

33、运行一个HDFS的dfsadmin客户端。

用法:hadoop dfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get | wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status | details | force] [-metasave filename]

[-setQuota...] [-clrQuota...] [-help [cmd]]

命令选项描述

-report 报告文件系统的基本信息和统计信息。

-safemode enter | leave | get | wait 安全模式维护命令。安全模式是Namenode的一个状态,这种状态下,Namenode

1. 不接受对名字空间的更改(只读)

2. 不复制或删除块

Namenode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式。

-refreshNodes 重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode 的集合。

-finalizeUpgrade 终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。

-upgradeProgress status | details | force 请求当前系统的升级状态,状态的细节,或者强制升级操作进行。-metasave filename 保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的文件。对于下面的每一项,

中都会一行内容与之对应

1. Namenode收到的Datanode的心跳信号

2. 等待被复制的块

3. 正在被复制的块

4. 等待被删除的块

-setQuota... 为每个目录设定配额。目录配额是一个长整型整数,强制限定了目录树下的名字个数。

命令会在这个目录上工作良好,以下情况会报错:

1. N不是一个正整数,或者

2. 用户不是管理员,或者

3. 这个目录不存在或是文件,或者

4. 目录会马上超出新设定的配额。

-clrQuota... 为每一个目录清除配额设定。

命令会在这个目录上工作良好,以下情况会报错:

1. 这个目录不存在或是文件,或者

2. 用户不是管理员。

如果目录原来没有配额不会报错。

-help [cmd] 显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。

34、运行MapReduce job Tracker节点(jobtracker)。

用法:hadoopjobtracker

35、运行namenode。有关升级,回滚,升级终结的更多信息请参考升级和回滚。

用法:hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint]

命令选项描述

-format 格式化namenode。它启动namenode,格式化namenode,之后关闭namenode。

-upgrade 分发新版本的hadoop后,namenode应以upgrade选项启动。

-rollback 将namenode回滚到前一版本。这个选项要在停止集群,分发老的hadoop版本后使用。

-finalize finalize会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将再

不可用,升级终结操作之后,它会停掉namenode。

-importCheckpoint 从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。

36、运行HDFS的secondary namenode。

用法:hadoopsecondarynamenode [-checkpoint [force]] | [-geteditsize]

命令选项描述

-checkpoint [force] 如果EditLog的大小>= fs.checkpoint.size,启动Secondary namenode的检查点

过程。如果使用了-force,将不考虑EditLog的大小。

-geteditsize 打印EditLog大小。

37、运行MapReduce的task Tracker节点。

用法:hadooptasktracker

1、列出所有Hadoop Shell支持的命令

$ bin/hadoop fs -help

2、显示关于某个命令的详细信息

$ bin/hadoop fs -help command-name

3、用户可使用以下命令在指定路径下查看历史日志汇总

$ bin/hadoop job -history output-dir

这条命令会显示作业的细节信息,失败和终止的任务细节。

4、关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看$ bin/hadoop job -history all output-dir

5、格式化一个新的分布式文件系统:

$ bin/hadoop namenode -format

6、在分配的NameNode上,运行下面的命令启动HDFS:

$ bin/start-dfs.sh

bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave 上启动DataNode守护进程。

7、在分配的JobTracker上,运行下面的命令启动Map/Reduce:

$ bin/start-mapred.sh

bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。

8、在分配的NameNode上,执行下面的命令停止HDFS:

$ bin/stop-dfs.sh

bin/stop-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave

上停止DataNode守护进程。

9、在分配的JobTracker上,运行下面的命令停止Map/Reduce:

$ bin/stop-mapred.sh

bin/stop-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave 上停止TaskTracker守护进程。

DFSShell

10、创建一个名为/foodir 的目录

$ bin/hadoop dfs -mkdir /foodir

11、创建一个名为/foodir 的目录

$ bin/hadoop dfs -mkdir /foodir

12、查看名为/foodir/myfile.txt 的文件内容

$ bin/hadoop dfs -cat /foodir/myfile.txt

DFSAdmin

13、将集群置于安全模式

$ bin/hadoop dfsadmin -safemode enter

14、显示Datanode列表

$ bin/hadoop dfsadmin -report

15、使Datanode节点datanodename退役

$ bin/hadoop dfsadmin -decommission datanodename

16、bin/hadoop dfsadmin -help 命令能列出所有当前支持的命令。比如:

* -report:报告HDFS的基本统计信息。有些信息也可以在NameNode Web服务首页看到。

* -safemode:虽然通常并不需要,但是管理员的确可以手动让NameNode进入或离开安全模式。

* -finalizeUpgrade:删除上一次升级时制作的集群备份。

17、显式地将HDFS置于安全模式

$ bin/hadoop dfsadmin -safemode

18、在升级之前,管理员需要用(升级终结操作)命令删除存在的备份文件

$ bin/hadoop dfsadmin -finalizeUpgrade

19、能够知道是否需要对一个集群执行升级终结操作。

$ dfsadmin -upgradeProgress status

20、使用-upgrade选项运行新的版本

$ bin/start-dfs.sh -upgrade

21、如果需要退回到老版本,就必须停止集群并且部署老版本的Hadoop,用回滚选项启动集群

$ bin/start-dfs.h -rollback

hadoop学习课程介绍

云凡教育Hadoop网络培训第二期 开课时间:2014年1月20日 授课方式:YY在线教育+课程视频+资料、笔记+辅导+推荐就业 YY教育平台:20483828 课程咨询:1441562932 大胃 云凡教育Hadoop交流群:306770165 费用: 第二期优惠特价:999元; 授课对象: 对大数据领域有求知欲,想成为其中一员的人员 想深入学习hadoop,而不只是只闻其名的人员 基础技能要求: 具有linux操作一般知识(因为hadoop在linux下跑) 有Java基础(因为hadoop是java写的并且编程也要用java语言) 课程特色 1,以企业实际应用为向导,进行知识点的深入浅出讲解; 2,从零起步,循序渐进,剖析每一个知识; 3,萃取出实际开发中最常用、最实用的内容并以深入浅出的方式把难点化于无形之中 学习安排: Hadoop的起源与生态系统介绍(了解什么是大数据;Google的三篇论文;围绕Hadoop形成的一系列的生态系统;各个子项目简要介绍)

1_Linux系统环境搭建和基本命令使用 针对很多同学对linux命令不熟悉,在课程的学习中,由于命令不熟悉导致很多错误产生,所以特意增加一节linux基础课程,讲解一些常用的命令,对接下来的学习中做好入门准备; 02_Hadoop本地(单机)模式和伪分布式模式安装 本节是最基本的课程,属于入门级别,主要对Hadoop 介绍,集中安装模式,如何在linux上面单机(本地)和伪分布模式安装Hadoop,对HDFS 和MapReduce进行测试和初步认识。 03_HDFS的体系结构、Shell操作、Java API使用和应用案例 本节是对hadoop核心之一——HDFS的讲解。HDFS是所有hadoop操作的基础,属于基本的内容。对本节内容的理解直接影响以后所有课程的学习。在本节学习中,我们会讲述hdfs的体系结构,以及使用shell、java不同方式对hdfs 的操作。在工作中,这两种方式都非常常用。学会了本节内容,就可以自己开发网盘应用了。在本节学习中,我们不仅对理论和操作进行讲解,也会讲解hdfs 的源代码,方便部分学员以后对hadoop源码进行修改。 04_MapReduce入门、框架原理、深入学习和相关MR面试题 本节开始对hadoop核心之一——mapreduce的讲解。mapreduce是hadoop 的核心,是以后各种框架运行的基础,这是必须掌握的。在本次讲解中,掌握mapreduce执行的详细过程,以单词计数为例,讲解mapreduce的详细执行过程。还讲解hadoop的序列化机制和数据类型,并使用自定义类型实现电信日志信息的统计。最后,还要讲解hadoop的RPC机制,这是hadoop运行的基础,通过该节学习,我们就可以明白hadoop是怎么明白的了,就不必糊涂了,本节内容特别重要。 05_Hadoop集群安装管理、NameNode安全模式和Hadoop 1.x串讲复习 hadoop就业主要是两个方向:hadoop工程师和hadoop集群管理员。我们课程主要培养工程师。本节内容是面向集群管理员的,主要讲述集群管理的知

hadoop基本操作指令

Hadoop基本操作指令 假设Hadoop的安装目录HADOOP_HOME为/home/admin/hadoop,默认认为Hadoop环境已经由运维人员配置好直接可以使用 启动与关闭 启动Hadoop 1. 进入HADOOP_HOME目录。 2. 执行sh bin/start-all.sh 关闭Hadoop 1. 进入HADOOP_HOME目录。 2. 执行sh bin/stop-all.sh 文件操作 Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。并且支持通配符,如*。 查看文件列表 查看hdfs中/user/admin/aaron目录下的文件。 1. 进入HADOOP_HOME目录。 2. 执行sh bin/hadoop fs -ls /user/admin/aaron 这样,我们就找到了hdfs中/user/admin/aaron目录下的文件了。 我们也可以列出hdfs中/user/admin/aaron目录下的所有文件(包括子目录下的文件)。 1. 进入HADOOP_HOME目录。 2. 执行sh bin/hadoop fs -lsr /user/admin/aaron 创建文件目录 查看hdfs中/user/admin/aaron目录下再新建一个叫做newDir的新目录。 1. 进入HADOOP_HOME目录。 2. 执行sh bin/hadoop fs -mkdir /user/admin/aaron/newDir 删除文件 删除hdfs中/user/admin/aaron目录下一个名叫needDelete的文件 1. 进入HADOOP_HOME目录。 2. 执行sh bin/hadoop fs -rm /user/admin/aaron/needDelete 删除hdfs中/user/admin/aaron目录以及该目录下的所有文件

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu_CentOS

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置Hadoop 集群,默认读者已经掌握了Hadoop 的单机伪分布式配置,否则请先查看Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置。 本教程由厦门大学数据库实验室出品,转载请注明。本教程适合于原生Hadoop 2,包括Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,保证按照步骤来,都能顺利安装并运行Hadoop。另外有Hadoop安装配置简略版方便有基础的读者快速完成安装。 为了方便新手入门,我们准备了两篇不同系统的Hadoop 伪分布式配置教程。但其他Hadoop 教程我们将不再区分,可同时适用于Ubuntu 和CentOS/RedHat 系统。例如本教程以Ubuntu 系统为主要演示环境,但对Ubuntu/CentOS 的不同配置之处、CentOS 6.x 与CentOS 7 的操作区别等都会尽量给出注明。 环境 本教程使用Ubuntu 14.04 64位作为系统环境,基于原生Hadoop 2,在Hadoop 2.6.0 (stable)版本下验证通过,可适合任何Hadoop 2.x.y 版本,例如Hadoop 2.7.1,Hadoop 2.4.1 等。 本教程简单的使用两个节点作为集群环境: 一个作为Master 节点,局域网IP 为192.168.1.121;另一个作为Slave 节点,局域网IP 为192.168.1.122。 准备工作 Hadoop 集群的安装配置大致为如下流程: 1.选定一台机器作为Master 2.在Master 节点上配置hadoop 用户、安装SSH server、安装Java 环境 3.在Master 节点上安装Hadoop,并完成配置 4.在其他Slave 节点上配置hadoop 用户、安装SSH server、安装Java 环境 5.将Master 节点上的/usr/local/hadoop 目录复制到其他Slave 节点上 6.在Master 节点上开启Hadoop 配置hadoop 用户、安装SSH server、安装Java 环境、安装Hadoop 等过程已经在Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置中有详细介绍,请前往查看,不再重复叙述。 继续下一步配置前,请先完成上述流程的前 4 个步骤。 网络配置 假设集群所用的节点都位于同一个局域网。 如果使用的是虚拟机安装的系统,那么需要更改网络连接方式为桥接(Bridge)模式,才能实现多个节点互连,例如在VirturalBox 中的设置如下图。此外,如果节点的系统是在虚拟机中直接复制的,要确保各个节点的Mac 地址不同(可以点右边的按钮随机生成MAC 地址,否则IP 会冲突):

hadoop基本命令_建表-删除-导数据

HADOOP表操作 1、hadoop简单说明 hadoop 数据库中的数据是以文件方式存存储。一个数据表即是一个数据文件。hadoop目前仅在LINUX 的环境下面运行。使用hadoop数据库的语法即hive语法。(可百度hive语法学习) 通过s_crt连接到主机。 使用SCRT连接到主机,输入hive命令,进行hadoop数据库操作。 2、使用hive 进行HADOOP数据库操作

3、hadoop数据库几个基本命令 show datebases; 查看数据库内容; 注意:hadoop用的hive语法用“;”结束,代表一个命令输入完成。 usezb_dim; show tables;

4、在hadoop数据库上面建表; a1: 了解hadoop的数据类型 int 整型; bigint 整型,与int 的区别是长度在于int; int,bigint 相当于oralce的number型,但是不带小数点。 doubble 相当于oracle的numbe型,可带小数点; string 相当于oralce的varchar2(),但是不用带长度; a2: 建表,由于hadoop的数据是以文件有形式存放,所以需要指定分隔符。 create table zb_dim.dim_bi_test_yu3(id bigint,test1 string,test2 string)

row format delimited fields terminated by '\t' stored as textfile; --这里指定'\t'为分隔符 a2.1 查看建表结构: describe A2.2 往表里面插入数据。 由于hadoop的数据是以文件存在,所以插入数据要先生成一个数据文件,然后使用SFTP将数据文件导入表中。

Hadoop 学习笔记

Hadoop 在Hadoop上运行MapReduce命令 实验jar:WordCount.jar 运行代码:root/……/hadoop/bin/hadoop jar jar包名称使用的包名称input(输入地址) output(输出地址) 生成测试文件:echo -e "aa\tbb \tcc\nbb\tcc\tdd" > ceshi.txt 输入地址:/data2/u_lx_data/qiandongjun/eclipse/crjworkspace/input 输出地址:/data2/u_lx_data/qiandongjun/eclipse/crjworkspace/output 将测试文件转入输入文件夹:Hadoop fs -put ceshi.txt /data2/u_lx_data/qiandongjun/eclipse/crjworkspace/input/ceshi.txt 运行如下代码:hadoop jar /data2/u_lx_data/qiandongjun/eclipse/crjworkspace/WordCount.jar WordCount /data2/u_lx_data/qiandongjun/eclipse/crjworkspace/input/ceshi.txt /data2/u_lx_data/qiandongjun/eclipse/crjworkspace/output Hadoop架构 1、HDFS架构 2、MapReduce架构 HDFS架构(采用了Master/Slave 架构) 1、Client --- 文件系统接口,给用户调用 2、NameNode --- 管理HDFS的目录树和相关的的文件元数据信息以及监控DataNode的状 态。信息以“fsimage”及“editlog”两个文件形势存放 3、DataNode --- 负责实际的数据存储,并将数据定期汇报给NameNode。每个节点上都 安装一个DataNode 4、Secondary NameNode --- 定期合并fsimage和edits日志,并传输给NameNode (存储基本单位为block) MapReduce架构(采用了Master/Slave 架构) 1、Client --- 提交MapReduce 程序并可查看作业运行状态 2、JobTracker --- 资源监控和作业调度 3、TaskTracker --- 向JobTracker汇报作业运行情况和资源使用情况(周期性),并同时接 收命令执行操作 4、Task --- (1)Map Task (2)Reduce Task ——均有TaskTracker启动 MapReduce处理单位为split,是一个逻辑概念 split的多少决定了Map Task的数目,每个split交由一个Map Task处理 Hadoop MapReduce作业流程及生命周期 一共5个步骤 1、作业提交及初始化。JobClient将作业相关上传到HDFS上,然后通过RPC通知JobTracker,

Hadoop-0.20.2详细安装及疑难问题

安装 2011年4月4日 10:13 Hadoop-0.20.2安装使用 1、Cygwin 安装 ssh 2、按照以下的文档配置ssh 在Windows上安装Ha doop教程.pdf 3、几个配置文件的配置 3.1、conf/core-site.xml https://www.wendangku.net/doc/8f6207331.html, hdfs://localhost:9000 true hadoop.tmp.dir /workspace/temp/hadoop/tmp/hadoop- ${https://www.wendangku.net/doc/8f6207331.html,} true 3.2、conf/hdfs-site.xml dfs.replication 1 true https://www.wendangku.net/doc/8f6207331.html,.dir /workspace/temp/hadoop/data/hadoop/name true

dfs.data.dir /workspace/temp/hadoop/data/hadoop/data true 3.3、conf/mapred-site.xml mapred.job.tracker localhost:9001 true 3.4、conf/hadoop-env.sh export JAVA_HOME=D:/workspace/tools/jdk1.6 4、解决启动的时候 ClassNotFound: org.apache.hadoop.util.PlatformName 将 %hadoop_home%\bin\hadoop-config.sh中的第190行 修改为如下: JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m -classpath ${HADOOP_COMMON_HOME}/hadoop-common-0.21.0.jar org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"` 5、命令

入门大数据,需要学习哪些基础知识

大数据的发展历程总体上可以划分为三个重要阶段,萌芽期、成熟期和大规模应用期,20世纪90年至21世纪初,为萌芽期,随着,一批商业智能工具和知识管理技术的开始和应用,度过了数据萌芽。21世纪前十年则为成熟期,主要标志为,大数据解决方案逐渐走向成熟,形成了并行计算与分布式系统两大核心技,谷歌的GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始大行期道,2010年以后,为大规模应用期,标志为,数据应用渗透各行各业,数据驱动决策,信息社会智能化程度快速提高。 数据时代的到来,也推动了数据行业的发展,包括企业使用数据获取价值,促使了大量人员从事于数据的学习,学习大数据需要掌握基础知识,接下从我的角度,为大家做个简要的阐述。 学习大数据需要掌握的知识,初期了解概念,后期就要学习数据技术,主要包括: 1.大数据概念 2.大数据的影响

3.大数据的影响 4.大数据的应用 5.大数据的产业 6.大数据处理架构Hadoop 7.大数据关键技术 8.大数据的计算模式 后三个牵涉的数据技技术,就复杂一点了,可以细说一下: 1.大数据处理架构Hadoop:Hadoop的特性、Hadoop生态系统、Hadoop 的安装与使用; 2.大数据关键技术技术:数据采集、数据存储与管理、数据处理与分析、数据隐私与安全; 3.大数据处理计算模式:批处理计算、流计算、图计算、查询分析计算

数据的核心技术就是获取数据价值,获取数据前提是,先要有数据,这就牵涉数据挖掘了。 本文内容由北大青鸟佳音校区老师于网络整理,学计算机技术就选北大青鸟佳音校区!了解校区详情可进入https://www.wendangku.net/doc/8f6207331.html,网站,学校地址位于北京市西城区北礼士路100号!

(完整版)hadoop例题

选择题 1、关于MapReduce的描述错误的是() A、MapReduce框架会先排序map任务的输出 B、通常,作业的输入输出都会被存储在文件系统中 C、通常计算节点和存储节点是同一节点 D、一个Task通常会把输入集切分成若干独立的数据块 2、关于基于Hadoop的MapReduce编程的环境配置,下面哪一步是不必要的() A、安装linux或者在Windows下安装Cgywin B、安装java C、安装MapReduce D、配置Hadoop参数 3、关于基于Hadoop的MapReduce编程的环境配置,下面哪一步是不必要的() A、配置java环境变量 B、配置Hadoop环境变量 C、配置Eclipse D、配置ssh 4、下列说法错误的是() A、MapReduce中maperconbiner reducer 缺一不可 B、在JobConf中InputFormat参数可以不设 C、在JobConf中MapperClass参数可以不设

D、在JobConf中OutputKeyComparator参数可以不设 5、下列关于mapreduce的key/value对的说法正确的是() A、输入键值对不需要和输出键值对类型一致 B、输入的key类型必须和输出的key类型一致 C、输入的value类型必须和输出的value类型一致 D、输入键值对只能映射成一个输出键值对 6、在mapreduce任务中,下列哪一项会由hadoop系统自动排序() A、keys of mapper's output B、values of mapper's output C、keys of reducer's output D、values of reducer's output 7、关于mapreduce框架中一个作业的reduce任务的数目,下列说法正确的是() A、由自定义的Partitioner来确定 B、是分块的总数目一半 C、可以由用户来自定义,通过JobConf.setNumReducetTask(int)来设定一个作业中reduce的任务数目 D、由MapReduce随机确定其数目 8、MapReduce框架中,在Map和Reduce之间的combiner的作用是() A、对Map的输出结果排序 B、对中间过程的输出进行本地的聚集

centos下hadoop2.6.0配置

Hadoop-2.6.0配置 前面的部分跟配置Hadoop-1.2.1的一样就可以,什么都不用变,完全参考文档1即可。下面的部分就按照下面的做就可以了。 hadoop-2.6.0的版本用张老师的。 下面的配置Hadoop hadoop-2.6.0的部分 1.修改hadoop- 2.6.0/etc/hadoop/hadoop-env.sh,添加JDK支持: export JAVA_HOME=/usr/java/jdk1.6.0_45 如果不知道你的JDK目录,使用命令echo $JAVA_HOME查看。 2.修改hadoop-2.6.0/etc/hadoop/core-site.xml 注意:必须加在节点内 hadoop.tmp.dir /home/hadoop/hadoop-2.6.0/tmp Abase for other temporary directories. https://www.wendangku.net/doc/8f6207331.html, hdfs://master:9000 3.修改hadoop-2.6.0/etc/hadoop/hdfs-site.xml https://www.wendangku.net/doc/8f6207331.html,.dir /home/hadoop/hadoop-2.6.0/dfs/name Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently. dfs.data.dir /home/hadoop/hadoop-2.6.0/dfs/data Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks. dfs.replication 1 4.修改hadoop-2.6.0/etc/hadoop/mapred-site.xml

Hadoop 集群基本操作命令-王建雄-2016-08-22

Hadoop 集群基本操作命令 列出所有Hadoop Shell支持的命令 $ bin/hadoop fs -help (注:一般手动安装hadoop大数据平台,只需要创建一个用户即可,所有的操作命令就可以在这个用户下执行;现在是使用ambari安装的dadoop大数据平台,安装过程中会自动创建hadoop生态系统组件的用户,那么就可以到相应的用户下操作了,当然也可以在root用户下执行。下面的图就是执行的结果,只是hadoop shell 支持的所有命令,详细命令解说在下面,因为太多,我没有粘贴。) 显示关于某个命令的详细信息 $ bin/hadoop fs -help command-name (注:可能有些命令,不知道什么意思,那么可以通过上面的命令查看该命令的详细使用信息。例子: 这里我用的是hdfs用户。) 注:上面的两个命令就可以帮助查找所有的haodoop命令和该命令的详细使用资料。

创建一个名为 /daxiong 的目录 $ bin/hadoop dfs -mkdir /daxiong 查看名为 /daxiong/myfile.txt 的文件内容$ bin/hadoop dfs -cat /hadoop dfs -cat /user/haha/part-m-00000 上图看到的是我上传上去的一张表,我只截了一部分图。 注:hadoop fs <..> 命令等同于hadoop dfs <..> 命令(hdfs fs/dfs)显示Datanode列表 $ bin/hadoop dfsadmin -report

$ bin/hadoop dfsadmin -help 命令能列出所有当前支持的命令。比如: -report:报告HDFS的基本统计信息。 注:有些信息也可以在NameNode Web服务首页看到 运行HDFS文件系统检查工具(fsck tools) 用法:hadoop fsck [GENERIC_OPTIONS] [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]] 命令选项描述 检查的起始目录。 -move 移动受损文件到/lost+found -delete 删除受损文件。 -openforwrite 打印出写打开的文件。 -files 打印出正被检查的文件。 -blocks 打印出块信息报告。 -locations 打印出每个块的位置信息。 -racks 打印出data-node的网络拓扑结构。 打印版本信息 用法:hadoop version 运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程(balancer)

java 基础知识之hadoop源码阅读必备(一)

java 程序员你真的懂java吗? 一起来看下hadoop中的如何去使用java的 大数据是目前IT技术中最火热的话题,也是未来的行业方向,越来越多的人参与到大数据的学习行列中。从最基础的伪分布式环境搭建,再到分布式环境搭建,再进入代码的编写工作。这时候码农和大牛的分界点已经出现了,所谓的码农就是你让我做什么我就做什么,我只负责实现,不管原理,也不想知道原理。大牛就开始不听的问自己why?why?why?于是乎,很自然的去看源码了。然而像hadoop这样的源码N多人参与了修改和完善,看起来非常的吃力。然后不管如何大牛就是大牛,再硬的骨头也要啃。目前做大数据的80%都是从WEB开发转变过来的,什么spring mvc框架、SSH框架非常熟悉,其实不管你做了多少年的WEB开发,你很少接触到hadoop中java代码编写的风格,有些人根本就看不懂什么意思。下面我来介绍下hadoop源码怎么看。 hadoop体现的是分布式框架,因此所有的通信都基于RPC来操作,关于RPC的操作后续再介绍。hadoop源码怎么看系列分多个阶段介绍,下面重点介绍下JA V A基础知识。 一、多线程编程 在hadoop源码中,我们能看到大量的类似这样的代码 return executor.submit(new Callable() { @Override public String call() throws Exception { //方法类 } 下面简单介绍下java的多线程编程 启动一个线程可以使用下列几种方式 1、创建一个Runnable,来调度,返回结果为空。 ExecutorService executor = Executors.newFixedThreadPool(5); executor.submit(new Runnable() { @Override public void run() { System.out.println("runnable1 running."); } }); 这种方式启动一个线程后,在后台运行,不用等到结果,因为也不会返回结果 2、创建一个Callable,来调度,有返回结果 Future future1 = executor.submit(new Callable() { @Override public String call() throws Exception { // TODO Auto-generated method stub //具体执行一些内部操作 return "返回结果了!"; } }); System.out.println("task1: " + future1.get());

hadoop常用命令

启动Hadoop ?进入HADOOP_HOME目录。 ?执行sh bin/start-all.sh 关闭Hadoop ?进入HADOOP_HOME目录。 ?执行sh bin/stop-all.sh 1、查看指定目录下内容 hadoopdfs –ls [文件目录] eg: hadoopdfs –ls /user/wangkai.pt 2、打开某个已存在文件 hadoopdfs –cat [file_path] eg:hadoopdfs -cat /user/wangkai.pt/data.txt 3、将本地文件存储至hadoop hadoopfs –put [本地地址] [hadoop目录] hadoopfs –put /home/t/file.txt /user/t (file.txt是文件名) 4、将本地文件夹存储至hadoop hadoopfs –put [本地目录] [hadoop目录] hadoopfs –put /home/t/dir_name /user/t (dir_name是文件夹名) 5、将hadoop上某个文件down至本地已有目录下hadoopfs -get [文件目录] [本地目录] hadoopfs –get /user/t/ok.txt /home/t 6、删除hadoop上指定文件 hadoopfs –rm [文件地址] hadoopfs –rm /user/t/ok.txt 7、删除hadoop上指定文件夹(包含子目录等)hadoopfs –rm [目录地址] hadoopfs –rmr /user/t

8、在hadoop指定目录内创建新目录 hadoopfs –mkdir /user/t 9、在hadoop指定目录下新建一个空文件 使用touchz命令: hadoop fs -touchz /user/new.txt 10、将hadoop上某个文件重命名 使用mv命令: hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt) 11、将hadoop指定目录下所有内容保存为一个文件,同时down至本地hadoopdfs –getmerge /user /home/t 12、将正在运行的hadoop作业kill掉 hadoop job –kill [job-id] 1、列出所有Hadoop Shell支持的命令 $ bin/hadoopfs -help 2、显示关于某个命令的详细信息 $ bin/hadoopfs -help command-name 3、用户可使用以下命令在指定路径下查看历史日志汇总 $ bin/hadoop job -history output-dir 这条命令会显示作业的细节信息,失败和终止的任务细节。 4、关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看 $ bin/hadoop job -history all output-dir 5、格式化一个新的分布式文件系统: $ bin/hadoopnamenode -format 6、在分配的NameNode上,运行下面的命令启动HDFS: $ bin/start-dfs.sh bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。 7、在分配的JobTracker上,运行下面的命令启动Map/Reduce: $ bin/start-mapred.sh bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。 8、在分配的NameNode上,执行下面的命令停止HDFS: $ bin/stop-dfs.sh

hadoop2.6基于yarn安装配置详解

Hadoop2.6配置详解 在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。 这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.6解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM(由cloudra提出,原理类似zookeeper)。这里我使用QJM完成。主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode 1安装前准备 1.1示例机器 192.168.0.10 hadoop1 192.168.0.20 hadoop2 192.168.0.30 hadoop3 192.168.0.40 hadoop4 每台机器都有一个hadoop用户,密码是hadoop 所有机器上安装jdk1.7。 在hadoop2,hadoop3,hadoop4上安装Zookeeper3.4集群。 1.2配置ip与hostname 用root用户修改每台机器的hosts

Hadoop命令大全

Hadoop命令大全 Hadoop配置: Hadoop配置文件core-site.xml应增加如下配置,否则可能重启后发生Hadoop 命名节点文件丢失问题: hadoop.tmp.dir /home/limingguang/hadoopdata 环境变量设置: 为了便于使用各种命令,可以在.bashrc文件中添加如下内容: export JAVA_HOME=/home/limingguang/jdk1.7.0_07 export HADOOP_HOME=/home/limingguang/hadoop-1.0.3 export HIVE_HOME=/home/limingguang/hive-0.9.0 export MAHOUT_HOME=/home/limingguang/mahout-distribution-0.7 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$MAHOUT_HOME/bin: $PATH export HADOOP_HOME_WARN_SUPPRESS=1 具体目录请更改为安装目录,HADOOP_HOME_WARN_SUPPRESS变量为抑制HADOOP_HOME变量重复时的告警。 常用命令:

1、列出所有Hadoop Shell支持的命令 $ bin/hadoop fs -help 2、显示关于某个命令的详细信息 $ bin/hadoop fs -help command-name 3、用户可使用以下命令在指定路径下查看历史日志汇总 $ bin/hadoop job -history output-dir 这条命令会显示作业的细节信息,失败和终止的任务细节。 4、关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看 $ bin/hadoop job -history all output-dir 5、格式化一个新的分布式文件系统: $ bin/hadoop namenode -format 6、在分配的NameNode上,运行下面的命令启动HDFS: $ bin/start-dfs.sh bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。 7、在分配的JobTracker上,运行下面的命令启动Map/Reduce: $ bin/start-mapred.sh bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves 文件的内容,在所有列出的slave上启动TaskTracker守护进程。 8、在分配的NameNode上,执行下面的命令停止HDFS: $ bin/stop-dfs.sh bin/stop-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止DataNode守护进程。 9、在分配的JobTracker上,运行下面的命令停止Map/Reduce: $ bin/stop-mapred.sh bin/stop-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止TaskTracker守护进程。 10、启动所有 $ bin/start-all.sh 11、关闭所有 $ bin/stop-all.sh DFSShell 10、创建一个名为 /foodir 的目录 $ bin/hadoop dfs -mkdir /foodir 11、创建一个名为 /foodir 的目录 $ bin/hadoop dfs -mkdir /foodir 12、查看名为 /foodir/myfile.txt 的文件内容 $ bin/hadoop dfs -cat /foodir/myfile.txt

Hadoop题库

1. 以下哪一项不属于Hadoop可以运行的模式___C___。 A. 单机(本地)模式 B. 伪分布式模式 C. 互联模式 D. 分布式模式 2. Hadoop的作者是下面哪一位__B____。 A. Martin Fowler B. Doug cutting C. Kent Beck D. Grace Hopper 3. 下列哪个程序通常与 NameNode 在同一个节点启动__D___。 A. TaskTracker B. DataNode C. SecondaryNameNode D. Jobtracker 4. HDFS 默认 Block Size的大小是___B___。 5. 下列哪项通常是集群的最主要瓶颈____C__。 A. CPU B. 网络

C. 磁盘IO D. 内存 6. 下列关于MapReduce说法不正确的是_____C_。 A. MapReduce是一种计算框架 B. MapReduce来源于google的学术论文 C. MapReduce程序只能用java语言编写 D. MapReduce隐藏了并行计算的细节,方便使用 8. HDFS是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是 __D____。 A.一次写入,少次读 B.多次写入,少次读 C.多次写入,多次读 D.一次写入,多次读 9. HBase依靠__A____存储底层数据。 A. HDFS B. Hadoop C. Memory D. MapReduce 10. HBase依赖___D___提供强大的计算能力。 A. Zookeeper B. Chubby C. RPC D. MapReduce

hadoop提交作业分析

Hadoop提交作业流程分析 bin/hadoop jar mainclass args …… 这样的命令,各位玩Hadoop的估计已经调用过NN次了,每次写好一个Project或对Project做修改后,都必须打个Jar包,然后再用上面的命令提交到Hadoop Cluster上去运行,在开发阶段那是极其繁琐的。程序员是“最懒”的,既然麻烦肯定是要想些法子减少无谓的键盘敲击,顺带延长键盘寿命。比如有的人就写了些Shell脚本来自动编译、打包,然后提交到Hadoop。但还是稍显麻烦,目前比较方便的方法就是用Hadoop eclipse plugin,可以浏览管理HDFS,自动创建MR程序的模板文件,最爽的就是直接Run on hadoop了,但版本有点跟不上Hadoop的主版本了,目前的MR模板还是的。还有一款叫Hadoop Studio的软件,看上去貌似是蛮强大,但是没试过,这里不做评论。那么它们是怎么做到不用上面那个命令来提交作业的呢不知道没关系,开源的嘛,不懂得就直接看源码分析,这就是开源软件的最大利处。 我们首先从bin/hadoop这个Shell脚本开始分析,看这个脚本内部到底做了什么,如何来提交Hadoop作业的。 因为是Java程序,这个脚本最终都是要调用Java来运行的,所以这个脚本最重要的就是添加一些前置参数,如CLASSPATH等。所以,我们直接跳到这个脚本的最后一行,看它到底添加了那些参数,然后再

逐个分析(本文忽略了脚本中配置环境参数载入、Java查找、cygwin 处理等的分析)。 #run it exec "$JAVA"$JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH"$CLASS "$@" 从上面这行命令我们可以看到这个脚本最终添加了如下几个重要参数:JAVA_HEAP_MAX、HADOOP_OPTS、CLASSPATH、CLASS。下面我们来一个个的分析(本文基于Cloudera Hadoop 分析)。 首先是JAVA_HEAP_MAX,这个就比较简单了,主要涉及代码如下:JAVA_HEAP_MAX=-Xmx1000m # check envvars which might override default args if [ "$HADOOP_HEAPSIZE" !="" ];then #echo"run with heapsize $HADOOP_HEAPSIZE" JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m" #echo$JAVA_HEAP_MAX fi

相关文档