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

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

 

时间: 2024-10-30 22:32:29

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

Zookeeper的安装部署,zookeeper参数配置说明,集群搭建,查看集群状态

1.Zookeeper的安装部署 7.1 Zookeeper工作机制 7.1.1.Zookeeper集群角色 Zookeeper集群的角色:  Leader 和  follower (Observer) zk集群最好配成奇数个节点 只要集群中有半数以上节点存活,集群就能提供服务   7.2 Zookeeper部署 7.2.1 机器准备 1/ 安装到3台虚拟机上,准备的三台服务器地址是: C:\Windows\System32\drivers\etc\hosts中配置的内容如下:   192.16

如何在web管理软件中查看Lenovo Storage S3200/S2200存储日志?

首先登陆到web管理软件中,在View菜单中选择Event Log,屏幕显示记录的存储日志,通过选择安全级别可以查看不同的日志内容,筛选级别分为All.Critical.Error.Warning.Informational等五类.具体设置参加下图:

至顶而下的设计思路:QQ空间V6.0版

文章描述:设计中的继承与颠覆:以QQ空间V6设计产品升级为例. 空间诞生6年了,终于再一次升级,迎来了革新的V6.0版,它是近年来最重要的版本升级,肩负着空间的战略转型,促进平台开放,提升营收与活跃用户的重任.所以这一版本的升级,我们改变从前自细节入手,直接优化流程与表现的设计思路.而是从全局的角度切入,重新思考平台的定位策略,进一步整合信息架构,颠覆表现层的交互体验,提升用户对QQ空间的品牌认知与情感认同.改变过去每一次升级后,新增加的特性与功能为空间造成的臃肿复杂的现状 所以引入了Jesse

一个助Hadoop集群数据快速上云工具

背景 越来越多的公司和企业希望将业务迁移到云上,同时业务数据也希望能更顺畅的迁移到云上. 当前业界有很多公司是以Hadoop技术构建数据中心,所以本文将探讨如何快速的将Hadoop文件系统(HDFS)上的数据迁移到云上. 在阿里云上使用最广泛的存储服务是OSS对象存储.OSS的数据迁移工具ossimport2可以将您本地或第三方云存储服务上的文件同步到OSS上,但这个工具无法读取Hadoop文件系统的数据,无法发挥Hadoop分布式的特点.并且因为工具只支持本地文件,所以需要将HDFS上的文件先

PHP实现多图上传(结合uploadify插件)思路分析_php技巧

本文实例讲述了PHP实现多图上传的方法.分享给大家供大家参考,具体如下: 1.已有图片可以删除 2.有一个新增的按钮 3.点击新增按钮,跳出frame框 4.在frame框中实现图片异步上传与及时效果 5.上传成功后,调用回调函数 6.弹出框中的图片可以进行删除 7.frame弹出框点击保存,把图片通过js展示到页面中 8.页面点击保存,把图片数据保存到数据库 <?php foreach($info['product_img'] as $product_img) { ?> <div st

利用ASP.NET设计FTP文件上传(純前臺代碼)

asp.net|上传|设计|asp.net|上传 <% @ Import Namespace=" System.IO " %><html ><BODY ><SCRIPT LANGUAGE = "VB" RUNAT = "SERVER" > Sub UploadFile_Clicked ( Sender as Object, e as EventArgs ) Dim lstrFileName as s

利用ASP.NET设计FTP文件上传(中)

三. 软件设计中的重要步骤及具体解决办法 <一>.选择本地要上传到服务器的文件 首先要感谢ASP.NET的强大功能,他提供的HTML控制元件,使得我们很容易的通过一个对话框来选择要上传的文件.当然你的浏览器也必须是IE 3.02 或者Netscape 3.0版本或者比这二者版本高的浏览器.通过下列语句就可以完成选择本地一个文件的工作: <input id = " loFile " type = " file " runat = " ser

PHP文件上传之多文件上传的实现思路_php实例

多文件上传的两种情况 ①使用多个name值 <input type="file" name="file1"> <input type="file" name="file2"> <input type="file" name="file3"> <input type="file" name="file4"&g

ASP.NET设计FTP文件上传的解决方案_实用技巧

如果要用ASP来作一个FTP文件上传的页面,我想很多人立刻就会想到要用第三方开发的组件,利用第三方的组件,虽然开发起来相对比较容易.但一般来说,免费下载的第三方的组件都有某些方面的功能限制,若要购买正版的第三方组件,对于国内的用户,花销也是一个不小的数字,就是能够承担的起,烦杂的手续也使很多人望而却步.虽然微软公司在本身的视窗系统里面也提供了一个可以用来上传文件的组件--Posting Acceptor.但用过这个组件的朋友们都有一种普遍的感觉,就是实在不好用. 现在好了,自从微软公司推出了.N