这里面有一套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相关推荐

  1. 8、Hive数据仓库——环境搭建及简单使用

    文章目录 Hive数据仓库--环境搭建及简单使用 Hive的安装和使用 一.Linux的JDK的安装 (已经安装过JDK可以跳过此步骤) 二.离线安装MySQL(已经安装过MySQL可以跳过此步骤) ...

  2. 转载 jsonrpc环境搭建和简单实例

    jsonrpc环境搭建和简单实例 一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq  访问密码 6a50 二.新建一个web工程,j ...

  3. Liferay环境搭建、简单说明与相关资料

    Liferay环境搭建.简单说明与相关资料  2012年3月23日 简单说明 该教程为是我在工作交接时编制的文档的一部分,经过测试应该不会有大问题,但可能还是会有所遗漏,请留言指正,谢谢. 转载请注明 ...

  4. Appium+Java环境搭建及简单实例

    Appium+Java环境搭建及简单实例 一.下载jdk并配置好环境 二.下载Android-sdk并配置好环境 三.下载Eclipse软件 四.下载Node.js 下载地址:https://node ...

  5. Vue前端环境搭建(最简单,最全)

    Vue前端环境搭建(最简单,最全) VS code下载 下载地址:https://code.visualstudio.com/ node下载 v14.15.4 版本过高不兼容部分插件,v14.15.4 ...

  6. Python环境搭建以及简单入门介绍

    Python简介 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程 ...

  7. linux/window 下 solr5.1 tomcat7.x 环境搭建即简单功能测试

    2019独角兽企业重金招聘Python工程师标准>>> 之所以想使用solr来进行学习,很大一部分原因就是,solr能够在某种程度上提供RESTFUL相关的URL请求连接,可以把它理 ...

  8. 微信小程序之json-server环境搭建及简单操作

    学习视频:https://www.bilibili.com/video/BV1Gv411g7j6?p=81 模板 以精选文章为主 app.json里面写上路径 定义模板 在index.wxml中复制以 ...

  9. tinygo的windows环境搭建及简单例程

    windows 环境搭建 安装 g 这里还是推荐g这个 go 的多版本管理工具,类似 NodeJS 的 nvm,Python 的 virtualenv. 官网下载: https://github.co ...

最新文章

  1. 特斯拉再出车祸,两死一伤,这次是Model S
  2. 无需代码即可看视频造游戏!英伟达再现神操作!
  3. 斯坦福大学统计系教授带你玩转微生物组分析
  4. 输出区间内素数的c语言程序,1137C/C++经典程序训练7---求某个范围内的所有素数...
  5. jvm:运行时数据区--方法返回地址
  6. 【深度学习】相当全面的深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)...
  7. 探讨PHP页面跳转几种实现技巧
  8. SAP CRM One order appointment duration table
  9. [概率论与数理统计] 常用定义与公式
  10. leetcode笔记:Majority Element
  11. 递归删除评论php,php如何递归删除文件
  12. Svn内外网切换技巧
  13. 使用yum命令创建缓存时报错:Peer cert cannot be verified or peer cert invalid
  14. 向量范数与矩阵范数矩阵模的平方-函数和几何以及映射的关系-数学
  15. 人防工程防排烟及通风空气调节规范
  16. 永久存储:腌制一缸美味的泡菜+习题复习
  17. 项目1:Ego微商小程序
  18. java web分层和层间数据传递 vo bo po
  19. 一心多用多线程-阻塞队列(5)-CountDownLatch
  20. 网红王思聪数字时钟动态壁纸【电脑壁纸】

热门文章

  1. c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...
  2. [分享]敏感内容自动评审类库及辅助工具
  3. 计算机表格中如何计算数据透视表,如何在EXCEL数据透视表中进行计算 |
  4. webRTC(二十四):web远程多台android的实现
  5. Android 进阶之路:ASM 修改字节码,这样学就对了!
  6. Django Admin 上传多张图片并显示缩略图
  7. java 图片缩略图_java 缩略图实现
  8. HDLBits(4) Procedures合集
  9. 天刀各区服务器位置,天刀服务器人数统计2017 | 手游网游页游攻略大全
  10. Vue + Element + Table 分页选择勾选 和取消勾选的问题