欢迎投稿

今日深度:

Hive的安装过程,

Hive的安装过程,


文章目录

  • 1.hadoop:
    • 1. hdfs:
    • 2.mapreduce:
  • yarn:
    • 产生背景:
      • hadoop1.0的模块:
      • hadoop2.0
    • YARN的架构:
      • 1. 主节点:resourcemanager
        • 1.1 ASM:
        • 1.2 Scheduler:
          • FIFO:FIRST IN FIRST OUT 先进先出
          • Fair:公平调度器
          • Capacity:计算能力调度器 容量调度器
      • 从节点:nodemanager
        • 概念:
    • hive
      • Hive是什么?
  • 安装:
    • 1)元数据库使用自带的derby数据库
      • 1)上传安装包
      • 2)解压
      • 3)配置环境变量
      • 4)元数据库初始化
      • 5)启动
    • 2)元数据库为mysql的安装方式
      • 1)安装mysql并配置好mysql的用户名密码
        • 1)配置yum源
        • 2)上传hive的安装包
        • 3)解压hive的安装包
        • 4)修改环境变量
        • 5)修改hive的配置文件
        • 6)将mysql的驱动包放在hive的依赖库lib下
        • 7)初始化hive的元数据库
        • 8)启动hive

1.hadoop:

1. hdfs:

  • 操作:shell
  • 2.mapreduce:

  • 操作:

     wc
     map的key的设计  场景
     join  mapjoin
     分区  ****
     排序   ***
     分组   ****
     combiner   *****
    
  • yarn:

    产生背景:

    hadoop1.0的模块:

    hadoop2.0

    	模块:HDFS   MAPREDUCE  YARN
    

    YARN的架构:

    	主从架构的  resourcemanager   nodemanager
    

    1. 主节点:resourcemanager

    		整个资源调度的老大
    		1)负责为每一个job分配资源
    		2)负责启动当前job的老大  MRappmaster
    		3)负责管理所有的nodemanager
    		监控从节点的资源状况   存活状况
    		
    		组成:
    

    1.1 ASM:

    1.2 Scheduler:

    FIFO:FIRST IN FIRST OUT 先进先出
    Fair:公平调度器
    Capacity:计算能力调度器 容量调度器

    从节点:nodemanager

    概念:

    运行一个计算程序,满足的条件
    	1)程序
    	2)资源
    	3)数据
    MRappmaster:
    	每一个job启动的时候  会最先启动一个这个job对应的MRappmaster
    	wc   job------wc  MRappmaster
    	PI-----   PI   MRappmaster
    	一旦启动,
    	1)负责向resourcemanager申请maptask  reducetask的资源
    	2)负责启动当前job的maptask任务和reducetask任务
    	3)负责跟踪每一个maptask  reducetask的运行状态
    	4)将失败的maptask  reducetask任务进行重启
    

    yarn的资源调度过程:
    1)客户端向resourcemanager发送一个提交job的请求
    hadoop jar …jar … … …
    任务先提交给ASM,向ASM进行注册
    ASM将任务转交给Scheduler
    2)一旦有资源,调度器开始提交job的运行
    resourcemanager(ASM)到对应的资源上启动当前应用程序的MRappmaster
    3)MRappmaster向resourcemanager申请运行maptask和reducetask的资源
    4)resourcemanager向MRappmaster返回资源节点
    5)MRappmaster到对应的节点上启动Container,并在这个container中
    启动maptask任务和reducetask任务
    6)maptask和reducetask运行过程中向MRappmaster汇报自己的运行状态
    和进度
    7)maptask或reducetask运行完成就会向MRappmaster汇报
    MRappmaster 进行资源销毁释放资源
    8)所有的maptask和reducetask运行完成,MRappmaster向resourcemanager注销自己
    释放资源
    job的提交过程 ****
    共享资源:
    /tmp/hadoop-yarn/staging/hadoop/.staging/job_1541742916235_0015/job.jar
    /tmp/hadoop-yarn/staging/hadoop/.staging/job_1541742916235_0015/job.split
    /tmp/hadoop-yarn/staging/hadoop/.staging/job_1541742916235_0015/job.splitmetainfo
    /tmp/hadoop-yarn/staging/hadoop/.staging/job_1541742916235_0015/job.xml
    job.jar job.split job.splitmetainfo job.xml
    job.jar 原始jar包
    job.split
    job.splitmetainfo 当前job的切片信息 对应的maptask的并行度
    job.xml job的配置文件 job中所有的相关设置
    job.getConfiguration()

    maptask或reducetask从共享资源下载的文件在本地的目录:
    /home/hadoop/data/hadoopdata/nm-local-dir/usercache/hadoop/appcache
    

    yarn为mapreduce任务资源调度服务的
    注意:
    1)第10步中rm向mrappmaster返回maptask的资源节点的时候
    优先返回当前的mr任务的数据所在节点
    数据本地化原则
    如果说mr任务输入的数据的数据块存储的节点没有资源了
    这个时候rm会就近原则进行返回节点
    同机架
    不同机架 同机房
    2)安装集群的过程中,配置的从节点既是hdfs的从节点datanode
    也是yarn的从节点 nodemanager
    集群的运行过程中 nodemanager节点必然是datanode节点
    nodemanager:提供资源 运行程序
    datanode:提供数据存储
    这么配置的原因:数据在哪 计算在哪
    mr的设计原则:移动计算比移动数据更划算 计算向数据靠近

    补充:
    shuffle:
    80M溢写完成之后会移动元数据和原始数据形成背对背的结构
    形成一个新的分界线

    hive

    数据仓库
    产生的背景:
    hadoop中hdfs负责存储,mapreduce负责统计分析
    单词统计
    学生成绩统计 topN 平均分 结构化数据
    流量统计 一个手机号的所有的上行流量 下行流量 总流量 结构化数据
    join 结构化数据

    上面的需求,如果数据量小的时候,这些针对结构化数据的分析sql是最方便  高效的开发方式
    但是现在数据量大了  所以用MR框架
    缺点:
    	开发的成本高
    		用人成本
    			招聘  java   MR
    			主流的语言  java  c   python
    		时间成本:
    			开发的周期比较长的
    如果可以有一个组件,提供sql编程,分布式运行计算程序就好了
    hive就是干这个
    hive就是对外提供hql编程(方言版的sql),将hql转换为MR任务的工具
    hive底层数据hdfs的,计算使用的MR
    hive相当于对hadoop做了一层上层封装  
    hive可以看做值hadoop的另外一种模式的客户端
    hive可以极大的降低结构化数据分析的成本
    对于半结构化或非结构化的数据hive是不可以分析的	
    

    Hive是什么?

    1.Hive 由 Facebook 实现并开源
    	apache基金会的顶级项目
    	http://hive.apache.org/
    2.是基于 Hadoop 的一个数据仓库工具
    	数据仓库和数据库区别
    	1)概念
    	数据仓库:数据仓库更倾向于数据管理  
    			管理的数据可以不是存储在自己本地的数据
    			通常用于大批量的数据管理
    	数据库:
    		存储的数据一般在自己的本地
    		通常用于存储小批量的数据   一般用于存储结果数据
    	2)使用
    	数据仓库:hql  方言sql
    	数据库:
    		mysql   标准sql
    		nosql 数据库  自己的一套shell
    	3)应用场景上
    		OLAP    On line Analysis Processing
    			联机分析处理    查询    数据仓库
    			hive中不支持事务的
    			hive中甚至不支持update  delete操作  支持insert  但是性能比较低
    		OLTP   On line Transaction Processing
    			联机事务处理  增删改的操作   数据库
    	4)模式上
    		数据仓库:hive
    			读模式
    		数据库:	
    			关系型数据库写模式
    			分布式的数据库的模式不确定
    	
    3.可以将结构化的数据映射为一张数据库表
    	在hive中指定一份结构化的数据,就可以用hive中的表进行关联
    	数据文件的一行数据-----hive表中的一条数据
    	数据文件中的一个字段---hive表中的一列
    	computer,huangxiaoming,85
    	computer,xuzheng,54
    	computer,huangbo,86
    4.并提供 HQL(Hive SQL)查询功能
    	hive对外提供hql查询
    5.底层数据是存储在 HDFS 上
    	hive的原始数据存储的hdfs的,在hdfs上有一个hive的默认目录
    	称为hive的家目录,hive中存储的所有的表数据默认存储在hive的
    	家目录下
    6.Hive的本质是将 SQL 语句转换为 MapReduce 任务运行
    	在hive的底层会保存很多map和reduce模板
    	hive最后将hql语句翻译成map  reduce任务
    7.使不熟悉 MapReduce 的用户很方便地利用 HQL 
    	处理和计算 HDFS 上的结构化的数据
    8.适用于离线的批量数据计算
    	依赖于hadoop
    

    hive的优缺点:

    优点:延展性 自定义函数
    缺点:
    1)不支持事务
    2)不支持行级别的update delete操作
    目前支持insert的操作 性能低
    3)查询的延时性高 不适合实时

    hive的架构:
    1)用户接口层:CLI shell访问
    ODBC/JDBC 代码
    WEB UI 网页访问 不用 1)配置复杂 2)丑

    2)Thrift Server:跨语言服务层 c java python
    将各个语言 翻译成hive识别的操作符
    3)元数据库层:
    元数据库存储的是用于描述hive中的库或表或表字段的信息的数据
    hive的元数据是结构化数据存储的,hive的元数据存储在关系型数据库的
    默认存储在derby的数据库的 一般情况下我们会改为mysql

    hive中表:stu(id int,name String,age int)
    元数据:表名  表的字段   字段的顺序  字段的类型
    原始数据:存储的是表中的数据
    	例如:表中一条数据:1,zs,34  存储在hdfs的
    

    4)驱动层
    (1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
    (2) 编译器:编译器是将语法树编译为逻辑执行计划 初步构思
    (3) 优化器:优化器是对逻辑执行计划进行优化 相同的任务进行合并
    (4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划

    hive的安装:
    安装准备:
    jdk
    hadoop
    mysql
    安装好的
    安装节点:
    一个节点
    安装的版本:
    下载安装包的镜像站:

    		http://mirror.bit.edu.cn/apache/hive/ 
    
    		http://mirrors.hust.edu.cn/apache/hive/ 
    
    		http://mirrors.shu.edu.cn/apache/hive/ 
    
    		http://mirrors.tuna.tsinghua.edu.cn/apache/
    	hive2.3.2版本
    	1.2.1 版本
    

    安装:

    1)元数据库使用自带的derby数据库

    步骤:

    1)上传安装包

    2)解压

    		tar -xvzf apache-hive-2.3.2-bin.tar.gz
    

    3)配置环境变量

    		为了方便集群的版本升级,可以先创建软连接
    		ln -s apache-hive-2.3.2-bin hive
    		配置换变量:
    
    sudo vi /etc/profile
    export HIVE_HOME=/home/hadoop/apps/hive
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
    
    		source /etc/profile
    

    4)元数据库初始化

    schematool -dbType derby -initSchema

    schemaTool completed 证明初始化成功
    注意:元数据初始化不成功的时候不要启动hive
    初始化完成后会发现在初始化的目录下,会多两个文件
    derby.log derby的日志文件
    metastore_db 存放元数据库的

    5)启动

    hive
    hive> hive的客户端操作界面 可以执行hive的shell
    对于hive来说sql的绝大多数是可以使用的
    直接启动发现报错
    元数据库报错 元数据的实例化报错
    FAILED: SemanticException
    org.apache.hadoop.hive.ql.metadata.HiveException:
    java.lang.RuntimeException: Unable to
    instantiate
    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    这种方式在哪一个目录初始化 在哪一个目录启动 没有问题的
    切换目录,报错:
    FAILED: SemanticException org.apache.hadoop.hive.ql.metadata
    .HiveException: java.lang.RuntimeException:
    Unable to instantiate
    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    derby这种方式启动的时候只会读取启动目录下的元数据库,
    切换目录后启动目录下没有元数据信息了,所以报错

    缺陷:
    元数据信息无法共享的
    本目录只能访问本目录下的元数据信息
    只适合单用户使用 不适合多用户

    2)元数据库为mysql的安装方式

    1)安装mysql并配置好mysql的用户名密码

    yum安装mysql

    1)配置yum源

    在/mnt创建目录cdrom
    mkdir cdrom
    挂载
    sudo mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/
    配置本地的yum源
    cd /etc/yum.repos.d/
    sudo rename .repo .repo.bak *
    sudo cp CentOS-Media.repo.bak CentOS-Media.repo

    sudo yum clean all
    yum repolist

    2)安装mysql
    sudo yum install -y mysql-server
    sudo service mysqld start
    3)修改mysql的用户名 密码
    use mysql;
    delete from user where user=’’;
    update user set host=’%’ where host=‘localhost’;
    update user set password=PASSWORD(‘123456’) where user=‘root’;
    flush privileges;

    退出mysql
    重启mysql服务

    2)上传hive的安装包

    3)解压hive的安装包

    4)修改环境变量

    5)修改hive的配置文件

    /home/hadoop/apps/hive/conf
    touch hive-site.xml
    
    <configuration>
    
    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/myhive?createDatabaseIfNotExist=true</value>
    <description>元数据库的连接url,myhive指的是hive的元数据在mysql中的库名</description>
    <!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
    </property>
    
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>指定元数据库mysql的驱动类</description>
    </property>
    
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>元数据库mysql的用户名</description>
    </property>
    
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>元数据库mysql的密码</description>
    </property>
    </configuration>
    

    6)将mysql的驱动包放在hive的依赖库lib下

    7)初始化hive的元数据库

    		schematool -dbType mysql -initSchema
    		schemaTool completed
    

    8)启动hive

    		hive >
    		
    		hive初体验:
    		create database test;
    		use test;
    		建表关联score数据
    		math,huangxiaoming,85
    		create table stu(course string,name string,score int) row 
    		format delimited fields terminated by ','; 
    
    		row format行格式化
    		delimited  分界
    		fields terminated  列分界符
    		lines terminated by '\n'  行分割符
    		
    		本地数据加载到表中
    		load data local inpath '/home/hadoop/tmpdata/score' into table stu;
    

    www.htsjk.Com true http://www.htsjk.com/hive/35476.html NewsArticle Hive的安装过程, 文章目录 1.hadoop: 1. hdfs: 2.mapreduce: yarn: 产生背景: hadoop1.0的模块: hadoop2.0 YARN的架构: 1. 主节点:resourcemanager 1.1 ASM: 1.2 Scheduler: FIFO:FIRST IN FIRST OUT 先进先出 F...
    相关文章
      暂无相关文章
    评论暂时关闭