hive操作-1

写数据流程:
1:客户端发送请求,create方法请求namenode,告诉namenode上传的文件的文件名,文件大小,文件的拥有者。
2:namendoe根据以上信息算出来文件需要切成多少块block,block要存放在哪个DataNode节点上,并将这些信息返回客户端。
3:客户端调用write方法,将一个block写在DataNode节点上,每一个block默认都有三个副本,并不是由客户端分别往3个DataNode上写3份,是由上传了block的DataNode产生新的线程,去写入到其他DataNode节点。优势------快
4:写完后会返回给客户端一个信息,客户端再把信息返回给namenode.

读数据流程:
1:客户端发送请求,open方法发送请求到namenode,获得block位置信息
2:namenode返回所有的block的位置信息
3:客户端拿到信息之后,read方法并行的读取block信息,每一个block只需要从一个副本读取就可以
4:datanode返回客户端

namenode 管理元数据的机制
1:元数据是什么?
元数据是存储内存中的,磁盘里的数据永久保存
-mv /input/a.txt /output/b.txt 
修改元数据信息,如果信息在磁盘里,增删查改速度慢,在内存里非常快

edits和fsimage存在本地硬盘之中
cd /opt/modules/hadoop-2.7.3/data/tmp/dfs/name/current/
namenode:fsimage 文件系统镜像
edits:编辑日志 client操作行为:put mv ..... 记录到edits文件(要产生变化)存放位置由 dfs.namenode.name.dir属性(hdfs-site.xml)决定
 
namenode启动过程:
加载fsimage,并重新执行edits文件,然后加载到内存
如果edits文件比较大,合并会非常的消耗时间
解决方法:通过secondary namendoe 合并
等待datanode发送block 报告 到namenode
等待过程中,这个HDFS会进入安全模式(safemode)

secondary namendoe:
辅助namenode进行fsimage和edits进行文件合并
fsimage和edits的区别
1:概念:fsimage保存了最新的元数据检查点
edits:保存了自最新的元数据检查点的命名空间的变化


yarn计算平台:配置:
resourcemanager:负责管理整个集群的计算资源
nodemanager:负责管理自己所在节点的计算资源
nodemanager定时向resourcemanager发送报告(计算资源信息)

MySQL
结构化查询语言
select update delete 
create drop alter
数据库管理系统:在线的事务处理:
响应速度快,低延迟

hive:
数据仓库软件
在线分析处理
响应速度慢,高延迟,重在分析

hive的本质:用HDFS存储数据,用MapReduce来计算
bin/hdfs dfs -mkdir /tmp 
bin/hdfs dfs -mkdir -p /user/hive/warehouse

tar -zxvf 要解压的文件 -C 指定的目录
bin/hdfs dfs -chmod g+w /tmp 
bin/hdfs dfs -chmod g+w /user/hive/warehouse

/user/hive/warehouse ---HIVE 仓库目录

create table student(
id int,
name string
)row format delimited fields terminated by '\t';
row format delimited fields terminated by '\t'----指定列分割符
加载数据到student表
load data local inpath '/home/hadoop/a.txt' into table student;
加载本地数据,数据会复制到对应的表目录

加载HDFS上数据到student表:
load data inpath '/imput/a.txt' into table student;
加载HDFS上的数据,数据会剪切到对应的表目录


建表时指定的分隔符和加载数据的分隔符不一致,会解析不到数据
select * from student;

1001    zhangsan
1002    lisi
1001    zhangsan
1002    lisi
NULL    NULL
NULL    NULL
MySQL加载数据使用的:写时模式
hive加载数据使用的:读时模式
hive在加载数据的时候,不会对数据进行检查,在select时进行检查


drop database AI6;
drop database AI6 cascade;

hive:三种:1:元数据存储在derby数据库中
----嵌入模式
2:元数据存储在MySQL数据库中----本地模式
3:元数据存储在MySQL数据库中----远程模式
安装MySQL:
1:rpm -qa | grep mysql
2:sudo rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
3:sudo yum -y install mysql-server
4:sudo service mysqld start 
   sudo chkconfig mysqld on
5:设置root用户密码
sudo /usr/bin/mysqladmin -u root password '123456'   
6:登录MySQL
mysql -uroot -p123456
7:设置MySQL允许远程用户登录
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
刷新授权表
flush privileges;
重启MySQL服务
sudo service mysqld restart 

hive-default.xml.template 改名  hive-site.xml
hive-site.xml,注意:用户名和密码不可以有空格
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://blue01.mydomain: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>root</value>
        </property>
        
拷贝mysql驱动到lib/        

delete from user where user='root' and host='127.0.0.1';

在MySQL的metastore数据库下
DBS--database 存储在hive中创建的数据库信息
TBLS--tables 存储在hive中创建的数据表信息

显示数据名,列名,临时生效,重启后失效
set hive.cli.print.current.db;
set hive.cli.print.header;
set hive.cli.print.current.db=true;
set hive.cli.print.header=true;
永久生效:
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
  </property>
  
  <property>
    <name>hive.cli.print.header</name>
    <value>true</value>
  </property>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值