当前位置:文档之家› hadoop入门学习笔记

hadoop入门学习笔记

hadoop入门学习笔记
hadoop入门学习笔记

一.H adoop简介

1.1hadoop概述

课程总括:

1.掌握hadoop基本知识,进行hadoop的HDFS和MapReduce应用开发,搭建Hadoop集群

2.掌握Hbase基本知识,搭建Hbase集群,Hbase基本操作

3.

Hadoop是什么?

适合大数据的分布式存储和计算平台.

分布式存储:数据分散存储在堕胎计算机上,但对于用户感受不到(通透性)

分布式计算:负载均衡,请求分发机制,跨操作系统.

1.2hadoop体系结构

Hadoop核心项目

1.HDFS:(Hadoop Distributed File System)分布式文件系统(用户只管上传,而不用知道怎么存)

2.MapReduce:并行计算框架

HDFS的架构

主从结构:

1.主节点,只有一个namenode,负责:

①接受用户操作请求,是用户操作的入口

②维护文件系统的目录结构,陈祚命名空间

2.从节点:有很多datanode,负责

①存储文件

MapReduce的架构

主从结构:

1.主节点:只有一个JobTracker,负责

①接收客户提交的计算任务

②监控TaskTracker的执行

③,把计算任务分配给TaskTracker执行,即任务调度

2..从节点:有很多个TaskTracker

执行JobTracker分配的计算任务

HDFS中namenode,datanode于MapReduce中JobTracker和TaskTracker的区别

1.HDFS是负责数据存储的,MapReduce是负责任务分发与处理的

https://www.doczj.com/doc/a89765567.html,node和jobTracker一般不配置在同一节点上.因为namenode是负责对外请求

处理,而Jobtracker是对内任务分发的,应分开以保证系统安全性

3.Datanode与taskTracker一般配置在同一节点上,因为TaskTracker只处理本地数据

4.Datanode与TaskTracker不在同一节点时,TaskTracker处理的数据来源于其他文件系

5.用户进行存储是,与datanode直接打交道,namenode只是为用户提供block id,并记录

6.数据切歌存储是,一条数据存放在同一datanode上,否则数据作废

1.3搭建Hadoop集群环境

Hadoop部署方式

1.本地模式

2.伪分布模式:在同一节点上运行hadoop的各个进程

3.集群模式:Hadoop的各个进程运行在集群的很多节点上

二.初识hadoop

2.1 HDFS的shell操作

课程总括:

1.分布式文件系统与HDFS

2.HDFS体系结构与基本概念

3.HDFS的shell操作

4.java常用接口及api

HDFS的特点

1.对用户访问透明的文件系统,数据存放在许多节点上

2.适用于一次写入多次查询的情况,不支持并发写,不适合小文件

3.HDFS中有一层体系结构,把外部客户端看到的文件系统逻辑结构与真正数据存储的物理

结构,解耦了

HDFS的shell操作

1.hadoop fs –ls hdfs://nn1:22/

查看nn1节点下的目录和文件(仅显示此目录下的)

2.hadoop fs –lsr hdfs://nn1:22/

循环递归查看nn1节点下的所有目录和文件(包括子目录中的内容)

3.hadoop fs –mkdir hdfs://nn1:22/dir1

创建nn1节点根目录下的dir1目录

4.hadoop fs –touchz hdfs://nn1:22/dir1/file

在nn1节点的dir1目录下创建file空文件

5.hadopp fs –put hello hdfs://nn1:22/dir1

将本地的hello文件上传至nn1节点的dir1目录下(重复上传文件会报错)

6.hadoop fs –text hello hdfs://nn1:22/dir1/file

查看file文件中的内容

上传时若省略节点路径,系统会使用默认客户端的路径,默认客户端路径由core-site.xml 中的https://www.doczj.com/doc/a89765567.html,的值确定

7.hadoop fs –get hdfs://nn1:22/dir/file

将file文件下载到本地

8.hadoop fs –rmr hdfs://nn1:22/dir1

删除文件或目录,删除目录时,目录下的文件也被删除

Namenode

1.是整个文件系统的管理节点,他维护着整个文件系统的文件目录树,文件/目录的元信息

和每个文件对应的数据块列表,接收用户的操作请求

2.文件包括:

①Fsimage:元数据镜像文件,存储某一时段namenode内存元数据信息

②Edit:操作日志文件

③Fstime:保存最近一次checkpoint的时间

3.以上这些文件是保存在linux文件系统中的

4.文件上传时,namenode只负责管理,登记上传文件存储块,至于传输过程中,客户与

datanode直接传输,不经过namenode

5.文件上传时,namenode会将大文件切割成许多小文件来存储(一般64mb),提升了存储空

间利用率,增强文件传输过程的安全性(传输时进程down掉时,只需重传64mb的文件,而不需重传全部).至于各小块存储位置和如何进行组装由HDFS封装了

注:fsimage是数据与数据块存放的映射表,是集群的关键,在hdfs-site.xml中配置https://www.doczj.com/doc/a89765567.html,.dir的值,将其改为由逗号隔开的多个目录列表(逗号为英文,前后无空格,切目录必须为已存在的目录),则fsimage将在每个路径下存放一遍.

Datanode

1.提供真实数据的存储服务

2.文件快:最基本的存储单位.对于文件内容而言,一个文件的长度大小是size,那么从文件的

0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块成为一个block,HDFS默认Block大小为64MB,以一个256MB文件,共有256/64=4个block

3.不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个

数据存储空间

4.Replication,多副本,默认只有一个

注:1.默认快大小修改,在hdfs-defalut.xml中找到dfs.block.size,将其包含的property复制到hdfs-site.xml中,在修改其值,注意不要在源文件中修改

2.修改默认副本数,过程同上,找到dfs.replication

3.当文件大于64MB时,按64MB划分Block存储,剩余不足部分按实际大小占用block块

存储

secondaryNameNode

1.HA的一个解决方案,但不支持热备,配置即可

2.执行过程:从NameNode上下载数据信息(fsimage,edits),然后把两者合并,生成新的

fsimage,在本地保存,并将其推送至NameNode,同时重置NameNode上的edits

3.默认安装在NameNode节点上,但这样不安全

注,2.的详解:NameNode每隔1小时或edits满64Mb就触发合并,合并时,将数据传到secondaryNameNode时,因数据读写不能同步进行,此时NameNode产生一个新的日志文件edits.new用来存放这段时间的操作日志.SecondaryNameNode合并成fsimage后回传给NameNode替换掉原有fsimage,并将edits.new命名为edits.

补充说明:当NameNode当机时,通过secondaryNameNode恢复时,会丢失edits.new的映射表

本章经验总结:

1.搭建集群环境时,对于NameNode和JobTracker不在同一节点时,配置NameNode在chaoren1上,JobTracker在chaoren2上

(1)https://www.doczj.com/doc/a89765567.html,Node所在节点是通过配置文件core-site.xml的https://www.doczj.com/doc/a89765567.html,实现的.其值设

为hdfs://chaoren1:9000;JobTracker所在节点是通过mapred-site.xml的mapred.job.tracker的值实现,其值设为hdfs://chaoren2:9001

2.把修改复制到集群的其他节点中

3.其同时,不要使用start-all.sh,而应该使用hadoop-daemon.sh start xxxx

1.2在chaoren1上执行命令hadoop-daemon.sh start jobtracker

在chaoren2上执行hadoop-daemon.sh start secondarynamenode

在chaoren2上执行hadoop-daemon.sh start datanode

在chaoren1上执行hadoop-daemon.sh start tasktracker

https://www.doczj.com/doc/a89765567.html,Node单点问题的解决

1.使用https://www.doczj.com/doc/a89765567.html,.dir的多目录保存数据

2.使用secondaryNameNode

3.使用第三方的avatanode

3.执行HDFS格式化时,NameNode创建自己的目录结构,datanode因为没有实际数据,对其不产生任何影响

4.HDFS shell

使用put命令上传文件时

1.如果目的地是一个已经存在的文件夹时,新文件上传到文件夹内,文件名是原来的文

件名

2.如果目的地是一个已经存在的文件夹时,且源文件已经存在,再次上传报错

3.如果目的地是一个不存在的路径时,新文件上传成功,文件名是目标路径名称

2.2HDFS的java操作

package hdfs;

import java.io.IOException;

import https://www.doczj.com/doc/a89765567.html,.URI;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

public class example1 {

static Configuration conf = new Configuration();

static FileSystem hdfs;

static String firstHdfsDir;

static String secondHdfsDir;

static String localDir;

static {

String HDFSUrl = "hdfs://cluster/";

try {

hdfs = FileSystem.get(URI.create(HDFSUrl), conf);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws Exception {

final String localDir = "/home/hadoop/README.txt";

final String formerDir = "/xiong/";

final String newDir = "/xiongwei/";

final String fileDir = "/xiong/a";

final String content = "xiongwei";

final String newFileDir = "/xiongwei/b";

System.out.println(formerDir + "'s status:");

ListAll(formerDir);

System.out.println("mkdir :" + Mkdir(newDir));

System.out.println("create :" + CreateHDFSFile(fileDir, content));

System.out.println("put :" + PutHDFSFile(localDir, formerDir));

System.out.println("get :" + GetHDFSFile(localDir, fileDir));

System.out.println(fileDir + "'s context:");

ReadHDFSFile(fileDir);

System.out.println("rename :" + renameHDFSFile(newFileDir, fileDir)); }

/**

* get local path

*

* @param str

*/

public static void getLocalDir(String str) {

localDir = str;

}

/**

* get HDFS path.str's value pass to firstHdfsDir while which is true,Otherwise,pass to secondHdfsDir

* @param str

* @param which

*/

public static void getHDFSDir(String str, boolean which) {

if (which)

firstHdfsDir = str;

else

secondHdfsDir = str;

}

/**

* rename filename.And the former file will be deleted.

*

* @param newFileDir

* the direction of new filename

* @param formerDir

* the direction of former filename

* @return

*/

private static boolean renameHDFSFile(String newFileDir, String formerDir) {

try {

Path path = new Path(newFileDir);

Path topath = new Path(formerDir);

// former file will be retained after the function is executed.

boolean isRenamed = hdfs.rename(topath, path);

// delete former file

deleteHDFSFile(formerDir);

return isRenamed;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

/**

* delete a directory or a file,files in the directory will be deleted if * it's a directory

*

* @param formerDir

* @return

*/

private static boolean deleteHDFSFile(String formerDir) { try {

Path path = new Path(formerDir);

boolean isdeleted = hdfs.delete(path, true);

return isdeleted;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

/**

* read the context of file

*

* @param fileDir

*/

private static void ReadHDFSFile(String fileDir) {

try {

Path path = new Path(fileDir);

if (hdfs.exists(path)) {

FSDataInputStream is = hdfs.open(path);

FileStatus fs = hdfs.getFileStatus(path);

byte[] buffer = new byte[(int) fs.getLen()];

is.readFully(0, buffer);

String content = new String(buffer);

System.out.println(content);

is.close();

}

} catch (IOException e) {

e.printStackTrace();

}

/**

* download a file from HDFS to the local

*

* @param localDir

* local direction

* @param fileDir

* @return

*/

private static boolean GetHDFSFile(String localDir, String fileDir) {

try {

Path path = new Path(fileDir);

Path topath = new Path(localDir);

hdfs.copyToLocalFile(path, topath);

return true;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

/**

* put a local file to HDFS

*

* @param localDir

* @param formerDir

* @return

*/

private static boolean PutHDFSFile(String localDir, String formerDir) { try {

Path path = new Path(localDir);

Path topath = new Path(formerDir);

hdfs.copyFromLocalFile(path, topath);

return true;

} catch (IOException e) {

e.printStackTrace();

return false;

}

/**

* create a file and write the content

*

* @param fileDir

* @param content

* @return

*/

private static boolean CreateHDFSFile(String fileDir, String content) {

try {

Path path = new Path(fileDir);

FSDataOutputStream os = hdfs.create(path);

os.writeBytes(content);

os.close();

return true;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

/**

* create a directory

*

* @param newDir

* @return

*/

private static boolean Mkdir(String newDir) {

try {

Path path = new Path(newDir);

boolean isMkdir = hdfs.mkdirs(path);

return isMkdir;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

/**

* list all in the directory

*

* @param formerDir

*/

private static void ListAll(String formerDir) {

try {

Path path = new Path(formerDir);

FileStatus[] list = hdfs.listStatus(path);

for (FileStatus fs : list) {

System.out.println(fs.getPath().toString());

}

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* Check if exists.

*

* @param fileDir

* @return

*/

public static boolean isExist(String fileDir) {

try {

Path path = new Path(fileDir);

return hdfs.exists(path);

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

}

作业:

1.使用FileSystem.listStatus()方法显示内容如hadoop fs –ls所示

2.使用FileSystem.listStatus()方法显示内容如hadoop fs –lsr所示

3.比较archive,sequencefile,mapfile在处理小文件时,有什么异同,分别使用在什么场景?

2.3.1使用ant发布项目至服务器

1.在https://www.doczj.com/doc/a89765567.html,/网站上找到Download->binary Distributions->current release of ant 下载apache-ant-1.9.4-bin.zip.

2.文件解压后, 需要把lib目录下的jsch-0.1.51拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.51。

3.将拷贝来的build.xml与项目中的src文件夹、lib文件夹放在同一级

4.修改build.xml中的property值

5.在built.xml中右键选择run as->ant build

2.3.2RPC(remote procedure call)

1.远程过程指的是java进程,即一个java进程调用另一个java进程中对象的方法.

2.调用方称作客户端(client),被调用方称作服务端(server).RPC就是CS结构的通信.

3.RPC是hadoop分布式机制运行的基础

对象的方法是在客户端调用的,在服务端执行的

可以让程序运行在不同的服务端,但存在不同系统之间通信的安全隐患

作业:

DateNode与NameNode是如何进行RPC通信的?

DataNode是通过心跳机制与NameNode通信的,从源码角度求证?

2.4客户端与NameNode的通信过程

Namenode接口中的方法被远程客户端调用

2.5Mapreduce原理

1.taskTracker的map程序处理的数据的输入来源于datanode,但处理的记过输出却不一定放在dataNode上,在hadoop上,处理结果是放在linux磁盘上,在由随机生成(简单认为)的tasTracker中Reduce程序从各个节点的linux磁盘中去结果进行汇总,结果放在dataNode上(实际是放在HDFS上,至于放在那个或那几个dataNode上,由HDFS决定)

2.原来集中式的数据处理方式,缺点是海量数据移动到一个数据处理节点上,程序运行的大量时间耗费在网络传输上.

把计算程序放到存储数据的各个节点上并执行.绿色程序是计算本地节点的数据.那么并行结束后会有很多的中间结果.红色程序是把绿色程序运行的中间结果汇总到一起.作为最终结果.

3.Map到reduce数据分发的阶段叫:shuffle,shuffle是个过程,属于reduce部分

4.汇总节点是主动去各个节点要数据,而汇总节点何时去取数据是通过jobTracker (因为mapper处理完本机数据后会通知jobTracker)

5.reducer的个数是由mapper输出结果的分区个数决定的,而mapper的个数是由block的个数决定的,也可说是由inputSplit个数决定的.因为默认情况下,block大小和InputSplit大小是一样的.

2.6WorldAccount为例讲解MapReduce

2.6.1执行步骤

1.map任务处理

1.1读出输入文件内容,解析成Key,value对.对输入文件的每一行,解析成Key.value对,每一个键值对调用一次map函数

1.2写自己的逻辑,对输入的key,value处理,转换成新的key.value输出(仅此步自己编写,其余系统实现)

1.3对输出的Key,value进行分区

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

1.5分组后的数据进行规约

2.reduce任务处理

2.1对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点.

2.2对多个map任务的输出进行合并,排序,写reduce函数自己的逻辑,对输入的key,value处理,转换成新的key,value输出

2.3把reduce的输出保存到文件中.

package mapreduce;

import https://www.doczj.com/doc/a89765567.html,.URI;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

/**

* hello y ou

* hello m e

*

*/

public class WorldCountApp {

//注意这里的路径用集群名:cluster(因为在hadoop2中有两个namenode节点,集群自动切换//他们的工作状态,如果通过访问节点nn1来服务,那么有可能会失败)

private static final String INPUT_PATH = "hdfs://cluster /xiong/README.txt";

//输入路径(文件路径)

private static final String OUT_PATH = "hdfs://cluster/xiong";

//输出路径(目录路径)

public static void main(String[] args) throws Exception{

Configuration conf = new Configuration();

final FileSystem filesystem = FileSystem.get(new URI(OUT_PATH), conf);

//用输出路径获得fs对象

filesystem.delete(new Path(OUT_PATH), true);

//清理上一次执行产生的文件

final Job job = new Job(conf , WorldCountApp.class.getSimpleName());

job.setJarByClass(WorldCountApp.class);

FileInputFormat.setInputPaths(job, INPUT_PATH);

job.setMapperClass(MyMapper.class);//设置mapper程序

job.setMapOutputKeyClass(Text.class);设置mapper程序key的输出类型为Text

job.setMapOutputValueClass(LongWritable.class);

//设置mapper程序value的输出类型为LongWritable

job.setReducerClass(MyReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(LongWritable.class);

FileOutputFormat.setOutputPath(job, new Path(OUT_PATH));

job.waitForCompletion(true);//等待mapreduce执行完成后退出

}

//继承Mapper类,并覆盖map()函数,写自己的逻辑

public static class MyMapper extends Mapper{

protected void map(LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper.Context context) throws java.io.IOException ,InterruptedException {

final String line = value.toString();

//value为Text类型,同LongWritable一样是hadoop的数据类型,必须经过转换才能使用final String[] splited = line.split("\t");

for (String word : splited) {//仅是写入每个单词的键值对,未区分相同单词

context.write(new Text(word), new LongWritable(1));

}

};

}

//values 是以个LongWritable类型的数据集合,因为在mapper过程中,会自动分组将

//相同的key的value放到一个集合中

public static class MyReducer extends Reducer{

protected void reduce(Text key, https://www.doczj.com/doc/a89765567.html,ng.Iterable values, org.apache.hadoop.mapreduce.Reducer.Context context) throws java.io.IOException ,InterruptedException {

long count = 0L;

for (LongWritable times : values) {

count += times.get();

//LongWritable 类型数据调用get()方法得到long型数据

}

context.write(key, new LongWritable(count));

};

}

}

2.7详解MapReduce计算过程

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基本命令_建表-删除-导数据

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快速入门

?项目 ?维基 ?Hadoop 0.18文档 Last Published: 07/01/2009 00:38:20 文档 概述 快速入门 集群搭建 HDFS构架设计 HDFS使用指南 HDFS权限指南 HDFS配额管理指南 命令手册 FS Shell使用指南 DistCp使用指南 Map-Reduce教程 Hadoop本地库 Streaming Hadoop Archives Hadoop On Demand API参考 API Changes 维基 常见问题 邮件列表 发行说明 变更日志 PDF Hadoop快速入门 ?目的 ?先决条件 o支持平台 o所需软件 o安装软件 ?下载 ?运行Hadoop集群的准备工作 ?单机模式的操作方法 ?伪分布式模式的操作方法

o配置 o免密码ssh设置 o执行 ?完全分布式模式的操作方法 目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop 分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。 先决条件 支持平台 ?GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。 ?Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。 所需软件 Linux和Windows所需软件包括: 1.Java TM1.5.x,必须安装,建议选择Sun公司发行的Java版本。 2.ssh必须安装并且保证sshd一直运行,以便用Hadoop 脚本管理远端 Hadoop守护进程。 Windows下的附加软件需求 1.Cygwin - 提供上述软件之外的shell支持。 安装软件 如果你的集群尚未安装所需软件,你得首先安装它们。 以Ubuntu Linux为例: $ sudo apt-get install ssh $ sudo apt-get install rsync

(完整版)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、对中间过程的输出进行本地的聚集

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)

hadoop入门学习资料大全

Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。 搜索了一些WatchStor存储论坛关于hadoop入门的一些资料分享给大家希望对大家有帮助 jackrabbit封装hadoop的设计与实现 https://www.doczj.com/doc/a89765567.html,/thread-60444-1-1.html 用Hadoop进行分布式数据处理 https://www.doczj.com/doc/a89765567.html,/thread-60447-1-1.html

Hadoop源代码eclipse编译教程 https://www.doczj.com/doc/a89765567.html,/thread-60448-1-2.html Hadoop技术讲解 https://www.doczj.com/doc/a89765567.html,/thread-60449-1-2.html Hadoop权威指南(原版) https://www.doczj.com/doc/a89765567.html,/thread-60450-1-2.html Hadoop源代码分析完整版 https://www.doczj.com/doc/a89765567.html,/thread-60451-1-2.html 基于Hadoop的Map_Reduce框架研究报告 https://www.doczj.com/doc/a89765567.html,/thread-60452-1-2.html Hadoop任务调度 https://www.doczj.com/doc/a89765567.html,/thread-60453-1-2.html Hadoop使用常见问题以及解决方法 https://www.doczj.com/doc/a89765567.html,/thread-60454-1-2.html HBase:权威指南

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

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

(完整word版)hadoop安装教程

1、VMware安装 我们使用Vmware 14的版本,傻瓜式安装即可。(只要) 双击 如过 2.安装xshell 双击 3.安装镜像: 解压centos6.5-empty解压 双击打开CentOS6.5.vmx 如果打不开,在cmd窗口中输入:netsh winsock reset 然后重启电脑。 进入登录界面,点击other 用户名:root 密码:root 然后右键open in terminal 输入ifconfig 回车 查看ip地址

打开xshell

点击链接 如果有提示,则接受 输入用户名:root 输入密码:root 4.xshell连接虚拟机 打开虚拟机,通过ifconfig查看ip

5.安装jkd 1.解压Linux版本的JDK压缩包 mkdir:创建目录的命令 rm -rf 目录/文件删除目录命令 cd 目录进入指定目录 rz 可以上传本地文件到当前的linux目录中(也可以直接将安装包拖到xshell窗口) ls 可以查看当前目录中的所有文件 tar 解压压缩包(Tab键可以自动补齐文件名)

pwd 可以查看当前路径 文档编辑命令: vim 文件编辑命令 i:进入编辑状态 Esc(左上角):退出编辑状态 :wq 保存并退出 :q! 不保存退出 mkdir /home/software #按习惯用户自己安装的软件存放到/home/software目录下 cd /home/software #进入刚刚创建的目录 rz 上传jdk tar包 #利用xshell的rz命令上传文件(如果rz命令不能用,先执行yum install lrzsz -y ,需要联网) tar -xvf jdk-7u51-linux-x64.tar.gz #解压压缩包 2.配置环境变量 1)vim /etc/profile 2)在尾行添加 #set java environment JAVA_HOME=/home/software/jdk1.8.0_65 JAVA_BIN=/home/software/jdk1.8.0_65/bin PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH Esc 退出编辑状态 :wq #保存退出 注意JAVA_HOME要和自己系统中的jdk目录保持一致,如果是使用的rpm包安

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

(完整版)hadoop常见笔试题答案

Hadoop测试题 一.填空题,1分(41空),2分(42空)共125分 1.(每空1分) datanode 负责HDFS数据存储。 2.(每空1分)HDFS中的block默认保存 3 份。 3.(每空1分)ResourceManager 程序通常与NameNode 在一个节点启动。 4.(每空1分)hadoop运行的模式有:单机模式、伪分布模式、完全分布式。 5.(每空1分)Hadoop集群搭建中常用的4个配置文件为:core-site.xml 、hdfs-site.xml 、mapred-site.xml 、yarn-site.xml 。 6.(每空2分)HDFS将要存储的大文件进行分割,分割后存放在既定的存储块 中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求。 7.(每空2分)一个HDFS集群包括两大部分,即namenode 与datanode 。一般来说,一 个集群中会有一个namenode 和多个datanode 共同工作。 8.(每空2分) namenode 是集群的主服务器,主要是用于对HDFS中所有的文件及内容 数据进行维护,并不断读取记录集群中datanode 主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储。 9.(每空2分) datanode 在HDFS集群中担任任务具体执行角色,是集群的工作节点。文 件被分成若干个相同大小的数据块,分别存储在若干个datanode 上,datanode 会定期向集群内namenode 发送自己的运行状态与存储内容,并根据namnode 发送的指令进行工作。 10.(每空2分) namenode 负责接受客户端发送过来的信息,然后将文件存储位置信息发 送给client ,由client 直接与datanode 进行联系,从而进行部分文件的运算与操作。 11.(每空1分) block 是HDFS的基本存储单元,默认大小是128M 。 12.(每空1分)HDFS还可以对已经存储的Block进行多副本备份,将每个Block至少复制到 3 个相互独立的硬件上,这样可以快速恢复损坏的数据。 13.(每空2分)当客户端的读取操作发生错误的时候,客户端会向namenode 报告错误,并 请求namenode 排除错误的datanode 后,重新根据距离排序,从而获得一个新的的读取路径。如果所有的datanode 都报告读取失败,那么整个任务就读取失败。14.(每空2分)对于写出操作过程中出现的问题,FSDataOutputStream 并不会立即关闭。 客户端向Namenode报告错误信息,并直接向提供备份的datanode 中写入数据。备份datanode 被升级为首选datanode ,并在其余2个datanode 中备份复制数据。 NameNode对错误的DataNode进行标记以便后续对其进行处理。 15.(每空1分)格式化HDFS系统的命令为:hdfs namenode –format 。 16.(每空1分)启动hdfs的shell脚本为:start-dfs.sh 。 17.(每空1分)启动yarn的shell脚本为:start-yarn.sh 。 18.(每空1分)停止hdfs的shell脚本为:stop-dfs.sh 。 19.(每空1分)hadoop创建多级目录(如:/a/b/c)的命令为:hadoop fs –mkdir –p /a/b/c 。 20.(每空1分)hadoop显示根目录命令为:hadoop fs –lsr 。 21.(每空1分)hadoop包含的四大模块分别是:Hadoop common 、HDFS 、

Hadoop入门教程(四)MR作业的提交监控、输入输出控制及特性使用-北京尚学堂

北京尚学堂提供 上次课讲到MR重要运行参数,本次继续为大家讲解MapReduce相关 提交作业并监控 JobClient是用户作业与JobTracker交互的主要接口,它提供了提交作业,跟踪作业进度、访问任务报告及logs、以及获取MR集群状态信息等方法。 提交作业流程包括: ?检查作业的输入输出 ?计算作业的输入分片(InputSplit) ?如果需要,为DistributedCache设置必须的账户信息 ?将作业用到的jar包文件和配置信息拷贝至文件系统(一般为HDFS)上的MR系统路径中 ?提交作业到JobTracker,并可监控作业状态 作业历史(Job History)文件会记录在https://www.doczj.com/doc/a89765567.html,er.location指定的位置,默认在作业输出路径下的logs/history/路径下。因此历史日志默认在mapred.output.dir/logs/history下。 用户可以将https://www.doczj.com/doc/a89765567.html,er.location值设置为none来不记录作业历史。 使用命令来查看历史日志: 1 $hadoop job -history output-dir 上面命令会显示作业的详细信息、失败的被kill的任务(tip)的详细信息。使用下面命令可以查看作业更详细的信息: 1 $hadoop job -history all output-dir 可以使用OutputLogFilter从输出路径中过滤日志文件。 一般,我们创建应用,通过JobConf设置作业的各种属性,然后使用JobClient提交作业并监控进度。 作业控制 有时可能需要一个作业链完成复杂的任务。这点是可以轻松实现的,因为作业输出一般都在分布式文件系统上,作业输出可以当做下个作业的输入,这样就形成了链式作业。 这种作业成功是否依赖于客户端。客户端可以使用以下方式来控制作业的执行: ?runJob(JobConf):提交作业并仅在作业完成时返回 ?submitJob(JobConf):提交作业后立即返回一个RunningJob的引用,使用它可以查询作业状态并处理调度逻辑。 ?JobConf.setJobEndNotificationURI(String):设置作业完成时通知 你也可以使用Oozie来实现复杂的作业链。 作业输入 下面讲作业输入的内容。 InputFormat描述MR作业的输入信息。InputFormat有以下作用: 1.验证作业的输入信息

Hadoop最全面试题整理(附目录)

Hadoop面试题目及答案(附目录) 选择题 1.下面哪个程序负责HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 答案C datanode 2. HDfS 中的block 默认保存几份? a)3 份b)2 份c)1 份d)不确定 答案A 默认3 份 3.下列哪个程序通常与NameNode 在一个节点启动? a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 答案D 分析:hadoop 的集群是基于master/slave 模式,namenode 和jobtracker 属于master,datanode 和tasktracker 属于slave,master 只有一个,而slave 有多个SecondaryNameNode 内存需求和NameNode 在一个数量级上,所以通常secondaryNameNode(运行在单独的物理机器上)和NameNode 运行在不同的机器上。 JobTracker 和TaskTracker JobTracker 对应于NameNode,TaskTracker 对应于DataNode,DataNode 和NameNode 是针对数据存放来而言的,JobTracker 和TaskTracker 是对于MapReduce 执行而言的。mapreduce 中几个主要概念,mapreduce 整体上可以分为这么几条执行线索:jobclient,JobTracker 与TaskTracker。 1、JobClient 会在用户端通过JobClient 类将应用已经配置参数打包成jar 文件存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker 创建每一个Task(即MapTask 和ReduceTask)并将它们分发到各个TaskTracker 服务中去执行。 2、JobTracker 是一个master 服务,软件启动之后JobTracker 接收Job,负责调度Job 的每一个子任务task 运行于TaskTracker 上,并监控它们,如果发现有失败的task 就重新运行它。一般情况应该把JobTracker 部署在单独的机器上。 3、TaskTracker 是运行在多个节点上的slaver 服务。TaskTracker 主动与JobTracker 通信,接收作业,并负责直接执行每一个任务。TaskTracker 都需要运行在HDFS 的DataNode 上。 4. Hadoop 作者 a)Martin Fowler b)Kent Beck c)Doug cutting 答案C Doug cutting 5. HDFS 默认Block Size a)32MB b)64MB c)128MB 答案:B 6. 下列哪项通常是集群的最主要瓶颈 a)CPU b)网络c)磁盘IO d)内存 答案:C 磁盘 首先集群的目的是为了节省成本,用廉价的pc 机,取代小型机及大型机。小型机和大型机

Hadoop大数据开发基础教学进度表

学院 课程教学进度计划表(20 ~20 学年第二学期) 课程名称Hadoop大数据开发基础授课学时48 主讲(责任)教师 参与教学教师 授课班级/人数 专业(教研室) 填表时间 专业(教研室)主任 教务处编印 年月

一、课程教学目的 通过本课程的学习,使学生了解Hadoop集群的基本框架,Hadoop的基本理论,以及Hadoop的核心组件HDFS和MapReduce的原理和使用。为学生今后使用大数据技术挖掘、学习其他大数据技术奠定基础。同时,本课程将紧密结合实际,不仅通过大量的实践操作和练习提高学生的动手实践能力;而且会提供实际的案例,讲解实际项目的开发流程,通过案例讲解启发学生思维,并通过学生的实际操作来增强学生对于实际案例的思考以及实现,为学生毕业后能更快地适应工作环境创造条件。 二、教学方法及手段 本课程将采用理论与实践相结合的教学方法。在理论上,通过任务引入概念、原理和方法。在实践上,对于安装配置的内容,先有教师讲解与演练,再将安装教程发给学生,由学生自主完成;教学过程中的任务、实践操作、练习,可由教师提供简单思路,学生自主完成。 要求学生自己动手搭建Hadoop集群、分析实例,学习基本理论和方法,结合已有的知识,适当布置练习、实践题,组织一些讨论,充分调动学生的主观能动性,提高学生的动手实践能力,以达到本课程的教学目的。 三、课程考核方法 突出学生解决实际问题的能力,加强过程性考核。课程考核的成绩构成= 平时作业(20%)+ 课堂参与(10%)+ 期末考核(70%),期末考试建议采用开卷形式,试题应包括基本概念、基本理论、程序设计、综合应用等部分,题型可采用判断题、选择、简答、应用题等方式。

相关主题
文本预览
相关文档 最新文档