26 集群使用初步

HDFS的设计思路

l 设计思想

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

l 在大数据系统中作用:

为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务

l 重点概念:文件切块,副本存放,元数据

26.1 HDFS使用

1、查看集群状态

命令:   hdfs  dfsadmin –report

可以看出,集群共有3个datanode可用

也可打开web控制台查看HDFS集群信息,在浏览器打开http://hadoop:50070/

2、上传文件到HDFS

查看HDFS中的目录信息

命令:hadoop  fs  –ls  /

上传文件

命令:hadoop fs -put ./findbugs-1.3.9 /

[toto@hadoop software]$ hadoop fs -put ./findbugs-1.3.9 /

put: `/findbugs-1.3.9/LICENSE-ASM.txt': File exists

put: `/findbugs-1.3.9/LICENSE-AppleJavaExtensions.txt': File exists

put: `/findbugs-1.3.9/LICENSE-bcel.txt': File exists

put: `/findbugs-1.3.9/LICENSE-commons-lang.txt': File exists

put: `/findbugs-1.3.9/LICENSE-docbook.txt': File exists

put: `/findbugs-1.3.9/LICENSE-dom4j.txt': File exists

put: `/findbugs-1.3.9/LICENSE-jFormatString.txt': File exists

查看上传后的信息列表(hadoop fs –ls / 或 hadoop fs -ls /findbugs-1.3.9)

从HDFS下载文件

命令:hadoop fs -get /findbugs-1.3.9/LICENSE-ASM.txt

[toto@hadoop learn]$ cd /home/toto/learn

/home/toto/learn

[toto@hadoop learn]$ pwd

/home/toto/learn

[toto@hadoop learn]$ hadoop fs -get /findbugs-1.3.9/LICENSE-ASM.txt

[toto@hadoop learn]$ ls

LICENSE-ASM.txt

yarn的管理界面是:http://hadoop:8088/cluster

26.2模拟运行一个mapreduce程序

模拟运行一个mapreduce程序的时候,需要先启动hdfs,启动命令是:

[toto@hadoop1 hadoop-2.8.0]$cd /home/toto/software/hadoop-2.8.0

[toto@hadoop1 hadoop-2.8.0]$sbin/start-dfs.sh

在/home/toto/software/hadoop-2.8.0/share/hadoop/mapreduce下有一个mapreduce的运行例子:

[toto@hadoop mapreduce]$ cd /home/toto/software/hadoop-2.8.0/share/hadoop/mapreduce

[toto@hadoop mapreduce]$ pwd

/home/toto/software/hadoop-2.8.0/share/hadoop/mapreduce

[toto@hadoop mapreduce]$ ll

总用量 5088

-rw-r--r--. 1 toto hadoop  562900 3月  17 13:31 hadoop-mapreduce-client-app-2.8.0.jar

-rw-r--r--. 1 toto hadoop  782739 3月  17 13:31 hadoop-mapreduce-client-common-2.8.0.jar

-rw-r--r--. 1 toto hadoop 1571179 3月  17 13:31 hadoop-mapreduce-client-core-2.8.0.jar

-rw-r--r--. 1 toto hadoop  195000 3月  17 13:31 hadoop-mapreduce-client-hs-2.8.0.jar

-rw-r--r--. 1 toto hadoop   31533 3月  17 13:31 hadoop-mapreduce-client-hs-plugins-2.8.0.jar

-rw-r--r--. 1 toto hadoop   66999 3月  17 13:31 hadoop-mapreduce-client-jobclient-2.8.0.jar

-rw-r--r--. 1 toto hadoop 1587158 3月  17 13:31 hadoop-mapreduce-client-jobclient-2.8.0-tests.jar

-rw-r--r--. 1 toto hadoop   75495 3月  17 13:31 hadoop-mapreduce-client-shuffle-2.8.0.jar

-rw-r--r--. 1 toto hadoop  301934 3月  17 13:31 hadoop-mapreduce-examples-2.8.0.jar

drwxr-xr-x. 2 toto hadoop    4096 3月  17 13:31 jdiff

drwxr-xr-x. 2 toto hadoop    4096 3月  17 13:31 lib

drwxr-xr-x. 2 toto hadoop    4096 3月  17 13:31 lib-examples

drwxr-xr-x. 2 toto hadoop    4096 3月  17 13:31 sources

[toto@hadoop mapreduce]$

使用命令运行mapreduce命令:

[toto@hadoop mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.8.0.jar pi 5 5

Number of Maps  = 5

Samples per Map = 5

Wrote input for Map #0

Wrote input for Map #1

Wrote input for Map #2

Wrote input for Map #3

Wrote input for Map #4

Starting Job

17/05/29 14:47:36 INFO client.RMProxy: Connecting to ResourceManager at hadoop/192.168.106.80:8032

17/05/29 14:47:37 INFO input.FileInputFormat: Total input files to process : 5

17/05/29 14:47:37 INFO mapreduce.JobSubmitter: number of splits:5

17/05/29 14:47:38 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1495998405307_0001

17/05/29 14:47:39 INFO impl.YarnClientImpl: Submitted application application_1495998405307_0001

17/05/29 14:47:39 INFO mapreduce.Job: The url to track the job: http://hadoop:8088/proxy/application_1495998405307_0001/

17/05/29 14:47:39 INFO mapreduce.Job: Running job: job_1495998405307_0001

17/05/29 14:48:00 INFO mapreduce.Job: Job job_1495998405307_0001 running in uber mode : false

17/05/29 14:48:00 INFO mapreduce.Job:  map 0% reduce 0%

进入hdfs的管理界面(http://hadoop:8088/cluster/apps),查看程序运行情况:

26.2 MAPREDUCE使用

mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序

26.2.1 Demo开发——wordcount

1、需求

从大量(比如T级别)文本文件中,统计出每一个单词出现的总次数

2、mapreduce实现思路

Map阶段:

a)        从HDFS的源数据文件中逐行读取数据

b)        将每一行数据切分出单词

c)        为每一个单词构造一个键值对(单词,1)

d)        将键值对发送给reduce

Reduce阶段:

a)        接收map阶段输出的单词键值对

b)        将相同单词的键值对汇聚成一组

c)        对每一组,遍历组中的所有“值”,累加求和,即得到每一个单词的总次数

d)        将(单词,总次数)输出到HDFS的文件中

1、  具体编码实现

(1)定义一个mapper类

//首先要定义四个泛型的类型

//keyin:  LongWritable    valuein: Text

//keyout: Text            valueout:IntWritable

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

//map方法的生命周期:  框架每传一行数据就被调用一次

//key :  这一行的起始点在文件中的偏移量

//value: 这一行的内容

@Override

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

//拿到一行数据转换为string

String line = value.toString();

//将这一行切分出各个单词

String[] words = line.split(" ");

//遍历数组,输出<单词,1>

for(String word:words){

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

}

}

}

(2)定义一个reducer类

//生命周期:框架每传递进来一个kv 组,reduce方法被调用一次

@Override

protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

//定义一个计数器

int count = 0;

//遍历这一组kv的所有v,累加到count中

for(IntWritable value:values){

count += value.get();

}

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

}

}

(3)定义一个主类,用来描述job并提交job

public class WordCountRunner {

//把业务逻辑相关的信息(哪个是mapper,哪个是reducer,要处理的数据在哪里,输出的结果放哪里。。。。。。)描述成一个job对象

//把这个描述好的job提交给集群去运行

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

Configuration conf = new Configuration();

Job wcjob = Job.getInstance(conf);

//指定我这个job所在的jar包

//               wcjob.setJar("/home/hadoop/wordcount.jar");

wcjob.setJarByClass(WordCountRunner.class);

wcjob.setMapperClass(WordCountMapper.class);

wcjob.setReducerClass(WordCountReducer.class);

//设置我们的业务逻辑Mapper类的输出key和value的数据类型

wcjob.setMapOutputKeyClass(Text.class);

wcjob.setMapOutputValueClass(IntWritable.class);

//设置我们的业务逻辑Reducer类的输出key和value的数据类型

wcjob.setOutputKeyClass(Text.class);

wcjob.setOutputValueClass(IntWritable.class);

//指定要处理的数据所在的位置

FileInputFormat.setInputPaths(wcjob, "hdfs://hdp-server01:9000/wordcount/data/big.txt");

//指定处理完成之后的结果所保存的位置

FileOutputFormat.setOutputPath(wcjob, new Path("hdfs://hdp-server01:9000/wordcount/output/"));

//向yarn集群提交这个job

boolean res = wcjob.waitForCompletion(true);

System.exit(res?0:1);

}

26.2.2 程序打包运行

1.        将程序打包

2.        准备输入数据

vi  /home/hadoop/test.txt

Hello tom

Hello jim

Hello ketty

Hello world

Ketty tom

在hdfs上创建输入数据文件夹:

hadoop   fs mkdir  -p  /wordcount/input

将words.txt上传到hdfs上

hadoop  fs  –put  /home/hadoop/words.txt  /wordcount/input

3.        将程序jar包上传到集群的任意一台服务器上

4.        使用命令启动执行wordcount程序jar包

$ hadoop jar wordcount.jar cn.toto.bigdata.mrsimple.WordCountDriver/wordcount/input /wordcount/out

5.        查看执行结果

$ hadoop fs –cat /wordcount/out/part-r-00000

原文链接http://blog.csdn.net/tototuzuoquan/article/details/72802439

HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo的更多相关文章

  1. Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗

    Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你没有Hadoop集群的话也没有关系,我这里给出当时我 ...

  2. Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案

    1.问题来源及原因 用shell命令上传到HDFS中之后出现中文乱码,在shell命令窗口查看如图: 在eclipse中的文件HDFS查看工具查看如图: 原因:上传至HDFS文件系统的文本文件(这里是 ...

  3. Hadoop_13_Hadoop Shell脚本采集日志上传到HDFS

    案例1:开发shell采集脚本 1.点击流日志每天都10T,在业务应用服务器上,需要准实时上传至数据仓库(Hadoop HDFS)上 2.一般上传文件都是在凌晨24点操作,由于很多种类的业务数据都要在 ...

  4. FTP文件上传到HDFS上

    在做测试数据时,往往会有ftp数据上传到hdfs的需求,一般需要手动操作,这样做太费事,于是有了下边代码实现的方式: ftp数据上传到hdfs函数: import java.io.InputStrea ...

  5. 解决从本地文件系统上传到HDFS时的权限问题

    当使用 hadoop fs -put localfile /user/xxx 时提示: put: Permission denied: user=root, access=WRITE, inode=& ...

  6. PHP设计的超强大的文件上传类(单文件上传)

    form.html <!DOCTYPE html> <html> <head> <title>文件上传</title> </head& ...

  7. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  8. Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况

    使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...

  9. HDFS操作--文件上传/创建/删除/查询文件信息

    1.上传本地文件到HDFS //上传本地文件到HDFS public class CopyFile { public static void main(String[] args) { try { C ...

随机推荐

  1. Proxmark3命令帮助

    Proxmark3命令帮助     目录 [隐藏]  1 使用技巧 2 help 主帮助命令(基于r830以及以下版本) 3 hw 硬件检测相关命令 4 data 图形窗口/缓冲区数据操作等命令 5  ...

  2. MFC【6】文件I/O和串行化

    文件输入和输出(I/O)服务是所有操作系统的主要工作.Microsoft Windows提供了各种API函数用来读.写和操作磁盘文件.MFC将这些桉树和CFile类融合在面对对象的模型里.其中CFil ...

  3. javascript刷新父页面方法总结

    用iframe.弹出子页面刷新父页面iframe <script language=JavaScript> parent.location.reload(); </script> ...

  4. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  5. Cognos权限认证CJP方式之用户密码加密

    在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...

  6. [Angular-Scaled web] 4. Using ui-router's named views

    In the previous post, we use $stateProvider deriect to root url and using MainCtrl, categories.tmpl. ...

  7. (LeetCode 72)Edit Distance

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  8. OpenVPN多处理之-为什么不

    OpenVPN没有多处理.人所皆知.我觉得我有点啰嗦了.天天说这个事.为什么没有多处理呢?我们来看下OpenVPN的作者,大牛级别的,早已超越代码的重量级人物,James Yonan(简称JY)是怎么 ...

  9. STL - vector algorithm

    // create vector with elements from 1 to 6 in arbitrary order vector<, , , , , }; // find and pri ...

  10. BMFONT 字体制作

    原地址:http://blog.csdn.net/luyuncsd123/article/details/18351057 网上搜BMFont做字体,很多都是从一个字体文件读取,然后选择需要的字,然后 ...