hive的环境搭建,以及简单使用-01
这里面有一套cdh版本的hadoop,hive,zookeeper,都是配套的
链接:https://pan.baidu.com/s/1wmyMw9RVNMD4NNOg4u4VZg
提取码:m888
重新配置一遍hadoop运行环境,详细的配置在https://blog.csdn.net/kxj19980524/article/details/88954645
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop-senior01.buba.com:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/modules/hadoop-2.5.0-cdh5.3.6/data</value></property>
</configuration>
<!-- 指定数据冗余份数 --><property><name>dfs.replication</name><value>3</value></property><!-- 关闭权限检查--><property><name>dfs.permissions.enable</name><value>false</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop-senior03.buba.com:50090</value></property><property><name>dfs.namenode.http-address</name><value>hadoop-senior01.buba.com:50070</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop-senior02.buba.com</value></property><!--开启历史服务--><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log-aggregation.retain-seconds</name><value>86400</value></property><!-- 任务历史服务 --><property> <name>yarn.log.server.url</name> <value>http://hadoop-senior02.buba.com:19888/jobhistory/logs/</value> </property>
上面这个配置里的开启历史服务就是在执行完mapreduce程序后,可以访问以前执行过的mapreduce任务
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property><!--这两个配置节点得和上面历史服务配置节点保持一致--><property> <name>mapreduce.jobhistory.adress</name> <value>hadoop-senior02.buba.com:10020</value> </property><property> <name>mapreduce.jobhistory.webapp.adress</name> <value>hadoop-senior02.buba.com:19888</value> </property>
分发到别的节点,然后初始化
bin/hdfs namenode -format
初始化完后,编写两个脚本,一个是开启集群全部节点的,一个是关闭全部节点的.
#!/bin/bash
echo "---------------正在开启集群服务------------"
echo "---------------正在开启NameNode节点------------"
ssh kxj@hadoop-senior01.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start namenode'echo "---------------正在开启SecondaryNamenode节点------------"ssh kxj@hadoop-senior03.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start secondarynamenode'echo "---------------正在开启DataNode节点------------"for i in kxj@hadoop-senior01.buba.com kxj@hadoop-senior02.buba.com kxj@hadoop-senior03.buba.com
do ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start datanode'
doneecho "---------------正在开启ResourceManager节点------------"ssh kxj@hadoop-senior02.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh start resourcemanager'echo "---------------正在开启NodeManager节点------------"
for i in kxj@hadoop-senior01.buba.com kxj@hadoop-senior02.buba.com kxj@hadoop-senior03.buba.com
dossh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh start nodemanager'
doneecho "---------------正在开启JobHistoryServer节点------------"
ssh kxj@hadoop-senior02.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/mr-jobhistory-daemon.sh start historyserver'
#!/bin/bash
echo "---------------正在关闭集群服务------------"
echo "---------------正在关闭JobHistoryServer节点------------"
ssh kxj@hadoop-senior02.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/mr-jobhistory-daemon.sh stop historyserver'echo "---------------正在关闭ResourceManager节点------------"ssh kxj@hadoop-senior02.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh stop resourcemanager'echo "---------------正在关闭NodeManager节点------------"
for i in kxj@hadoop-senior01.buba.com kxj@hadoop-senior02.buba.com kxj@hadoop-senior03.buba.com
dossh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh stop nodemanager'
doneecho "---------------正在关闭NameNode节点------------"
ssh kxj@hadoop-senior01.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop namenode'echo "---------------正在关闭SecondaryNamenode节点------------"ssh kxj@hadoop-senior03.buba.com '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop secondarynamenode'echo "---------------正在关闭DataNode节点------------"for i in kxj@hadoop-senior01.buba.com kxj@hadoop-senior02.buba.com kxj@hadoop-senior03.buba.com
do ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop datanode'
done
编写完后修改它们的可执行权限.
上面命令当中ssh后面单引号,表示ssh到别的节点后,执行单引号里面的命令. echo `` >> kxj.txt 反引号作用是把反引号里的脚本结果输入到kxj.txt里
JobHistoryServer节点就是上面说的历史的那个服务
编写好后还不能运行呢,涉及到一个知识点,有shell和无shell
有shell
粗放来讲,你手动使用CRT登录某个Linux系统时,是有shell的
无shell
当你使用ssh访问某个系统的时候,是无shell的
无shell的时候是加载不了那个系统的环境变量的,只能加载那个系统的用户变量.
系统变量就是/etc/profile文件,用户变量是用户根目录下
用户变量
cat /etc/profile >> ~/.bashrc 把系统变量里的内容都加到用户环境变量里面
把另外两台也执行一下,执行完后就可以进行脚本的测试了.
hive介绍
Hive的特性
1、操作接口是采用SQL语法,HQL跟sql很相似.
2、避免了写MapReduce的繁琐过程.把sql语句转换成mapreduce程序自动打成jar包,运行.
Hive体系结构
1、Client客户端有两种.
** 终端命令行
** JDBC -- 不常用,非常麻烦(相对于前者)
2、metastore
** 原本的数据集和字段名称以及数据信息之间的双射关系。
** 我们目前是存储在Mysql中
3、Server服务端,也就是Hadoop
** 在操作Hive的同时,需要将Hadoop的HDFS开启,YARN开启,MAPRED配置好
数据库:
mysql、oracle、sqlserver、DB2、sqlite(手机端小型数据库)、MDB
数据仓库:
Hive,是数据仓库是MapReduce的客户端,也就是说不必要每台机器都安装部署Hive.
看下图,现在假设有一个txt文本是这种格式的,让每行的每个字段对应上表的字段名,如果写mapreduce程序的话很麻烦,但是用hive的话,可以在hive上建个表,然后执行段sql语句,想要的结果就能输出出来.
安装步骤
解压hive后,进入conf目录下,修改配置文件名称
mv hive-default.xml.template hive-site.xml
mv hive-env.sh.template hive-env.sh
JAVA_HOME=/opt/modules/jdk1.7.0_67
HADOOP_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6
export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-cdh5.3.6/conf
安装Mysql
$ su - root# yum -y install mysql mysql-server mysql-devel# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm# rpm -ivh mysql-community-release-el7-5.noarch.rpm# yum -y install mysql-community-server
启动mysql服务 start mysqld.service
修改mysql密码 mysqladmin -uroot password '123456'
下面这是两种登录MySQL的方式
修改一些用户权限,如果别的节点想访问这个mysql给它相应的权限.
grant all on *.* to root@'hadoop-senior01.buba.com' identified by '123456';
flush privileges; 刷新配置
grant:授权
all:所有权限
*.*:数据库名称.表名称
root:操作mysql的用户
@'':主机名
密码:123456
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop-senior01.buba.com:3306/metastore?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description>
</property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description>
</property>
注意在2785行左右缺少一个property标签,记得补上,官网下的没有,不然会报错.
修改日志配置文件名称
mysql驱动包https://download.csdn.net/download/kxj19980524/11136513
把mysql的驱动包放到hive的lib目录下
操作hive前先开启hadoop集群,不然不能操作.
启动hive后,在mysql中就有了metastore数据库了,其实不使用mysql数据库也行,用别的也行,在配置文件里配置上相应的驱动就可以.
当在hive中创建数据库的时候就会在这个目录下生成对应的.db文件夹,也可以在配置文件中修改地址.
这两个是开启一些提示功能的
这儿就有提示了
创建一个表并且查询相应信息,可以看到使用select * 的时候它是没有生成mapreduce程序的,之间就出结果了.hive里是string类型,不是varchar
后面的这个\t就是表示进行双射的时候,hive是根据\t来划分字段的,如果你文本里使用的是逗号或者别的东西分割开的话,hive是不识别的.
create table t1(eid int, name string, sex string) row format delimited fields terminated by '\t';
desc formatted t1; 查看表的详细信息的详细信息
安装好hive之后,会在mysql数据库中建立一个metastore数据库这个数据库中就是存的hive表的元数据信息,当在hive创建表后就会在MySQL的这个数据库中存上元数据,当在hive中创建一个数据库的时候,在hdfs上就会创建一个对应的.db文件夹,当在hive创建表的时候就会在这个.db文件夹下生成对应的文件,也会在metastore中生成相应的双射关系.
在mysql的metastore数据库的这个表中就是生成的双射关系.
清洗数据,比如公司给的数据是*隔开的,hive设置表的时候是以\t分割的这时候就需要先写一个mapreduce程序按\t分割开然后再把数据导入到hive里面去
load data local inpath '文件路径' into table 表名; 如果导入的是hdfs上的数据的话,把local去掉就可以了.
这个操作是往hive创建的表里导入数据.
如果执行的查询语句是按条件查询的话很明显它是走了mapreduce程序了 ,当在hive中查询的时候其实是先去metastore上找到表跟元数据的双射关系,然后再进行查询的,
点击后面的history可以看到以前执行过的mapreduce程序
如果每次执行那么简单的查询语句都转换成mapreduce程序的话是很慢的,修改下面配置就可以简单的语句不执行mapreduce了
hive命令参数 -e后面加引号,里面可以直接写hql语句.
也可以把hql语句放入.hql结尾的文件里然后使用-f执行,说明它可以支持shell脚本来执行hql语句.
创建两个表,创建部门,员工信息表
hive> create table if not exists db_hive_demo.dept(deptno int, dname string, loc string)row format delimited fields terminated by '\t';hive> create table if not exists db_hive_demo.emp(empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int)row format delimited fields terminated by '\t';
导入数据
dept.txt
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
emp.txt
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
load data local inpath '/opt/modules/hive-0.13.1-cdh5.3.6/hqldata/dept.txt' into table db_hive_demo.dept;
load data local inpath '/opt/modules/hive-0.13.1-cdh5.3.6/hqldata/emp.txt' into table db_hive_demo.emp;
复杂数据类型操作
1.Array
create table tb_array(
name string,
work_locations array<string>
)
row format delimited fields terminated by '\t'
collection items terminated by ',';
加载数据到表tb_array
zhangsan beijing,shanghai,tianjin,hangzhou
lisi changchu,chengdu,wuhan
load data local inpath '/opt/modules/hive-0.13.1-cdh5.3.6/t2.txt' into table kxj.tb_array;
可以使用下标来查询数据
用size来查询数组长度
2.Map
创建含有map数据结构的表
create table tb_map(
name string,
scores map<string,int>
)
row format delimited fields terminated by '\t'
collection items terminated by ','map keys terminated by ':';
load data local inpath '/opt/modules/hive-0.13.1-cdh5.3.6/map.txt' into table kxj.tb_map;
查询所有学生的英语成绩
查询所有学生的英语和数学成绩
Struct
创建一张带有结构体的表
create table tb_struct(
ip string,
userinfo struct<name:string,age:int>
)row format delimited fields terminated by '#'
collection items terminated by ':';
load data local inpath '/opt/modules/hive-0.13.1-cdh5.3.6/struct.txt' into table kxj.tb_struct;
查看hive历史操作命令,主要用于排查逻辑错误或者查看常用命令
Hive临时生效设置
固定语法:set 属性名=属性值
在hive上,可以当sql一样操作,基本上和sql是一样的,聚合函数什么的都有
如果metastore数据丢失的话,就丢了双射关系了没办法操作了所以需要定期的备份metastore数据
备份的基本语法:
$ mysqldump -uroot -p metastore > metastore.sql
还原的基本语法:
$ mysql -uroot -p metastore < metastore.sql
hive的环境搭建,以及简单使用-01相关推荐
- 8、Hive数据仓库——环境搭建及简单使用
文章目录 Hive数据仓库--环境搭建及简单使用 Hive的安装和使用 一.Linux的JDK的安装 (已经安装过JDK可以跳过此步骤) 二.离线安装MySQL(已经安装过MySQL可以跳过此步骤) ...
- 转载 jsonrpc环境搭建和简单实例
jsonrpc环境搭建和简单实例 一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq 访问密码 6a50 二.新建一个web工程,j ...
- Liferay环境搭建、简单说明与相关资料
Liferay环境搭建.简单说明与相关资料 2012年3月23日 简单说明 该教程为是我在工作交接时编制的文档的一部分,经过测试应该不会有大问题,但可能还是会有所遗漏,请留言指正,谢谢. 转载请注明 ...
- Appium+Java环境搭建及简单实例
Appium+Java环境搭建及简单实例 一.下载jdk并配置好环境 二.下载Android-sdk并配置好环境 三.下载Eclipse软件 四.下载Node.js 下载地址:https://node ...
- Vue前端环境搭建(最简单,最全)
Vue前端环境搭建(最简单,最全) VS code下载 下载地址:https://code.visualstudio.com/ node下载 v14.15.4 版本过高不兼容部分插件,v14.15.4 ...
- Python环境搭建以及简单入门介绍
Python简介 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程 ...
- linux/window 下 solr5.1 tomcat7.x 环境搭建即简单功能测试
2019独角兽企业重金招聘Python工程师标准>>> 之所以想使用solr来进行学习,很大一部分原因就是,solr能够在某种程度上提供RESTFUL相关的URL请求连接,可以把它理 ...
- 微信小程序之json-server环境搭建及简单操作
学习视频:https://www.bilibili.com/video/BV1Gv411g7j6?p=81 模板 以精选文章为主 app.json里面写上路径 定义模板 在index.wxml中复制以 ...
- tinygo的windows环境搭建及简单例程
windows 环境搭建 安装 g 这里还是推荐g这个 go 的多版本管理工具,类似 NodeJS 的 nvm,Python 的 virtualenv. 官网下载: https://github.co ...
最新文章
- 特斯拉再出车祸,两死一伤,这次是Model S
- 无需代码即可看视频造游戏!英伟达再现神操作!
- 斯坦福大学统计系教授带你玩转微生物组分析
- 输出区间内素数的c语言程序,1137C/C++经典程序训练7---求某个范围内的所有素数...
- jvm:运行时数据区--方法返回地址
- 【深度学习】相当全面的深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)...
- 探讨PHP页面跳转几种实现技巧
- SAP CRM One order appointment duration table
- [概率论与数理统计] 常用定义与公式
- leetcode笔记:Majority Element
- 递归删除评论php,php如何递归删除文件
- Svn内外网切换技巧
- 使用yum命令创建缓存时报错:Peer cert cannot be verified or peer cert invalid
- 向量范数与矩阵范数矩阵模的平方-函数和几何以及映射的关系-数学
- 人防工程防排烟及通风空气调节规范
- 永久存储:腌制一缸美味的泡菜+习题复习
- 项目1:Ego微商小程序
- java web分层和层间数据传递 vo bo po
- 一心多用多线程-阻塞队列(5)-CountDownLatch
- 网红王思聪数字时钟动态壁纸【电脑壁纸】
热门文章
- c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...
- [分享]敏感内容自动评审类库及辅助工具
- 计算机表格中如何计算数据透视表,如何在EXCEL数据透视表中进行计算 |
- webRTC(二十四):web远程多台android的实现
- Android 进阶之路:ASM 修改字节码,这样学就对了!
- Django Admin 上传多张图片并显示缩略图
- java 图片缩略图_java 缩略图实现
- HDLBits(4) Procedures合集
- 天刀各区服务器位置,天刀服务器人数统计2017 | 手游网游页游攻略大全
- Vue + Element + Table 分页选择勾选 和取消勾选的问题