AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

2020年5月18日_day10_Hive

上周回顾

MapReduce

  • 概述:分布式计算框架
  • 原理:
    • Mapper
      map(k,v,context) -> 映射
      map阶段,将每天数据单独经过某种处理
    • Shuffle
      将map处理完的数据进行分区、排序、合并
    • Reducer
      reduce(k,iter\<v>,context)

Linux补充

  • drwxr-xr-x
    • d 文件类型 d目录 -文件 l链接
    • rwx第一组 自己user
    • r-x第二组 用户所在组group
    • r-x第三组 其他用户other
r w x
2^2=4 2^1=2 2^0=1
change owner

chown user:group  file
chown -R  user:group dir

#将/opt/mysql目录及所有子目录和文件 更改所有者为mysql用户
chown -R mysql:mysql /opt/mysql

chmod 权限 files
chmod -R 权限 目录

chmod [u/g/o][+/-][w/r/x] file
chmod 755 file
chmod -R 755 dir

Hive

  • 概述:数据仓库 data warehouse
  • 原理:
    • Hive中表的数据存储在HDFS上
    • Hive中表的结构信息(meta元数据)存储在数据库RDB中
      默认使用derby,生产环境会只用Mysql/Oracle

1.更换元数据存储数据库

  • 在Hive默认的derby数据库使用过程中,我们会发现以下问题
  1. 每次在启动hive客户端的位置会生成一个metastore_db的目录,作为derby数据库的临时工作空间,如果不在同一位置启动,之前的元数据(表结构)就丢失了。
  2. derby不支持多用户同时使用
  • 所以我们可以考虑将默认的derby数据库换成其他的数据存储

  • 安装Mysql
    http://www.amoscloud.com/?p=1562

  • shell命令补充

    # 管道 "|" 作用是将左边命令的输出作为右边命令的输入
    # 常见用法
    # 查看进程详细信息
    ps -ef | grep pid(进程号)
    ps -aux | grep pid(进程号)
    netstat -anp | grep 端口号
  • 上传mysql驱动jar包到HIVE_HOME/lib

  • 修改Hive的配置文件让Hive链接Mysql
    hive-site.xml

    
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://test01:3306/metastore?createDatabaseIfNotExist=true</value>
    </property>
    
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
    
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>

</configuration>


- 修改完成后执行以下命令手动生成metadata模板
```shell
schematool -initSchema -dbType mysql
  • 启动hive客户端
  1. 验证多客户端登陆

  2. 查看meta信息

2.练习作业

  • 使用网站日志数据 和 HIVE+SQL 完成以下需求
    1. 统计每个IP访问的次数
    2. 统计每个IP的上传和下载流量
    3. 统计每天每小时的访客数量

发表评论

电子邮件地址不会被公开。 必填项已用*标注