大数据(MapReduce的编程细节及其Hive的安装,简单操作)

 


MapReduce编程细节分析
  • MapReduce中,Reduce可以没有 (纯数据的清洗,不用Reduce)

      job.setNumReduceTasks(0);
  • 设置多个Reduce

    // 默认在MapReduce中 Reduce的数量是1 
    job.setNumReduceTasks(3);

    //为什么Reduce的数量可以设置为多个
    内存角度  并行角度

    //如果Reduce数量多个话,那么生成结果也是多个独立的文件,放置在同一个目录下
  • Partition 分区

    分区的作用: Map 输出的key,合理分配对应的Reduce进行处理
    默认的分区策略:
    key%reduceNum = 
    public class HashPartitioner<K, V> extends Partitioner<K, V> {
        public HashPartitioner() {
        }
    ​
        public int getPartition(K key, V value, int numReduceTasks) {
            return (key.hashCode() & 2147483647) % numReduceTasks;
        }
    }
    ​
    自定义分区策略
    public class MyPartitioner<K,V> extends Partitioner<K,V>{
        
    }
    job.setPartitionerClass(MyPartitioner.class);
     
  • Map的压缩

    1. core-site.xml
    2. mapred-site.xml

     

     

 

  • Combainer编程

    Map端的Reduce
    job.setCombinerClass(MyReduce3.class);
  • Counter计数器

     Counter counter = context.getCounter("lhcCounter", "mapCount");
    counter.increment(1L);
Hive编程
概念: Hive是apache组织开源的一个数据仓库框架,最开始是FaceBook提供的.

1. 数据仓库
数据库   DataBase
存储的数据量级   小   价值高
数据仓库 DataWareHouse
存储的数据量级 大   价值低

2. Hive底层依附的是Hadoop

3. 以类SQL(HQL Hive Query Languge) 的方式运行MR,操作HDFS上的数据
  • Hive的原理分析

    Hive Hadoop on SQL
    SparkQL Spark on SQL
    Presto Impala kylin
  •  

  • Hive基本环境的搭建

    1. 搭建Hadoop
    2. Hive安装 加压缩
    3. 配置 
       hive-env.sh
       # Set HADOOP_HOME to point to a specific hadoop install directory
    HADOOP_HOME=/opt/install/hadoop-2.5.2
    ​
    # Hive Configuration Directory can be controlled by:
    export HIVE_CONF_DIR=/opt/install/apache-hive-0.13.1-bin/conf
       4. 在hdfs 创建  /tmp  数据库表对应的路径
                       /user/hive/warehouse
       5. 启动hive
    bin/hive

     

     
  • Hive的基本使用

    1. hive数据库
       show databases;
       create database if not exists lhc_140
       use lhc_140
    2. 表相关操作
       show tables;
       create table if not exists t_user(
        id int,
        name string
        )row format delimited fields terminated by '\t';
    3. 插入数据 导入数据 本地操作系统文件 向 hive表 导入数据
       load data local inpath '/root/data3' into table t_user;
    4. SQL语句
       select * from t_user;
  • Hive与HDFS对应的一个介绍

    1. 数据库对应的就是一个HDFS目录
    lhc141  /user/hive/warehouse/mydb
    2. 表对应一个HDFS目录
    /user/hive/warehouse/mydb/t_user
    3. 表中的数据 对应的是 HDFS上的文件
     load data local inpath '/root/data3' into table t_user;
     bin/hdfs dfs -put /root/data3 /user/hive/warehouse/mydb/t_user
    
    
posted @ 2019-01-26 17:43  DaDa~  阅读(226)  评论(0编辑  收藏  举报