08 Hadoop集群初步使用

简介: 08 Hadoop集群初步使用
1.HDFS使用

1、查看集群状态,命令: hdfs dfsadmin –report

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

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

2、上传文件到HDFS

查看HDFS中的目录信息,命令: Hadoop fs –ls /

上传文件,命令: Hadoop fs -put ./ scala-2.10.6.tgz to /

从HDFS下载文件,命令: Hadoop fs -get /yarn-site.xml

2.MAPREDUCE使用

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

Demo开发——wordcount

1、需求

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

2、mapreduce实现思路

Map阶段:

  1. 从HDFS的源数据文件中逐行读取数据
  2. 将每一行数据切分出单词
  3. 为每一个单词构造一个键值对(单词,1)
  4. 将键值对发送给reduce

Reduce阶段:

  1. 接收map阶段输出的单词键值对
  2. 将相同单词的键值对汇聚成一组
  3. 对每一组,遍历组中的所有“值”,累加求和,即得到每一个单词的总次数
  4. 将(单词,总次数)输出到HDFS的文件中

3.具体编码实现

(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);
  }

4.程序打包运行

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.itcast.bigdata.mrsimple.WordCountDriver /wordcount/input /wordcount/out

5.查看执行结果

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

目录
相关文章
|
7月前
|
分布式计算 Hadoop Java
CentOS中构建高可用Hadoop 3集群
这个过程像是在一个未知的森林中探索。但当你抵达终点,看到那个熟悉的Hadoop管理界面时,所有的艰辛都会化为乌有。仔细观察,尽全力,这就是构建高可用Hadoop 3集群的挑战之旅。
299 21
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
528 6
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
336 4
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
191 3
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
227 3
|
SQL 存储 分布式计算
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
261 3
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
319 3
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
321 3
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
143 3
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
271 1

相关实验场景

更多