文档视界 最新最全的文档下载
当前位置:文档视界 › 02_尚硅谷大数据之Hive安装

02_尚硅谷大数据之Hive安装

02_尚硅谷大数据之Hive安装
02_尚硅谷大数据之Hive安装

第2章Hive安装

2.1 Hive安装地址

1)Hive官网地址:

https://www.docsj.com/doc/768828405.html,/

2)文档查看地址:

https://https://www.docsj.com/doc/768828405.html,/confluence/display/Hive/GettingStarted

3)下载地址:

https://www.docsj.com/doc/768828405.html,/dist/hive/

4)github地址:

https://https://www.docsj.com/doc/768828405.html,/apache/hive

2.2 Hive安装部署

1)Hive安装及配置

(1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下

(2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面

[atguigu@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/ (3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive

[atguigu@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive

(4)修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh [atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh

(5)配置hive-env.sh文件

(a)配置HADOOP_HOME路径

export HADOOP_HOME=/opt/module/hadoop-2.7.2

(b)配置HIVE_CONF_DIR路径

export HIVE_CONF_DIR=/opt/module/hive/conf

2)Hadoop集群配置

(1)必须启动hdfs和yarn

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

(2)在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir /tmp

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir -p /user/hive/warehouse

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod 777 /tmp

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod 777 /user/hive/warehouse 3)Hive基本操作

(1)启动hive

[atguigu@hadoop102 hive]$ bin/hive

(2)查看数据库

hive>show databases;

(3)打开默认数据库

hive>use default;

(4)显示default数据库中的表

hive>show tables;

(5)创建一张表

hive> create table student(id int, name string) ;

(6)显示数据库中有几张表

hive>show tables;

(7)查看表的结构

hive>desc student;

(8)向表中插入数据

hive> insert into student values(1000,"ss");

(9)查询表中数据

hive> select * from student;

(10)退出hive

hive> quit;

2.3 将本地文件导入Hive案例

需求:将本地/opt/module/datas/student.txt这个目录下的数据导入到hive的student(id int, name

string)表中。

1)数据准备:在/opt/module/datas/student.txt这个目录下准备数据

(1)在/opt/module/目录下创建datas

[atguigu@hadoop102 module]$ mkdir datas

(2)在/opt/module/datas/目录下创建student.txt文件并添加数据

[atguigu@hadoop102 datas]$touch student.txt

[atguigu@hadoop102 datas]$vi student.txt

1001 zhangshan

1002 lishi

1003 zhaoliu

注意以tab键间隔。

2)Hive实际操作

(1)启动hive

[atguigu@hadoop102 hive]$ bin/hive

(2)显示数据库

hive>show databases;

(3)使用default数据库

hive>use default;

(4)显示default数据库中的表

hive>show tables;

(5)删除已创建的student表

hive> drop table student;

(6)创建student表,并声明文件分隔符’\t’

hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

(7)加载/opt/module/datas/student.txt 文件到student数据库表中。

hive> load data local inpath '/opt/module/datas/student.txt' into table student;

(8)Hive查询结果

hive> select * from student;

OK

1001 zhangshan

1002 lishi

1003 zhaoliu

Time taken: 0.266 seconds, Fetched: 3 row(s)

3)遇到的问题

再打开一个客户端窗口启动hive,会产生java.sql.SQLException异常。

原因是,Metastore默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore;

2.4 MySql安装

2.4.1 安装包准备

1)查看mysql是否安装,如果安装了,卸载mysql

(1)查看

[root@hadoop102 桌面]# rpm -qa|grep mysql

mysql-libs-5.1.73-7.el6.x86_64

(2)卸载

[root@hadoop102 桌面]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

2)解压mysql-libs.zip文件到当前目录

[root@hadoop102 software]# unzip mysql-libs.zip

[root@hadoop102 software]# ls

mysql-libs.zip

mysql-libs

3)进入到mysql-libs文件夹下,并设置当前用户执行权限

[root@hadoop102 mysql-libs]# ll

总用量76048

-rw-r--r--. 1 root root 18509960 3月26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm -rw-r--r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz

-rw-r--r--. 1 root root 55782196 3月26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm

[root@hadoop102 mysql-libs]# chmod u+x ./*

[root@hadoop102 mysql-libs]# ll

总用量76048

-rwxr--r--. 1 root root 18509960 3月26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm -rwxr--r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz

-rwxr--r--. 1 root root 55782196 3月26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm 2.4.2 安装MySql服务器

1)安装mysql服务端

[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm 2)查看产生的随机密码

[root@hadoop102 mysql-libs]# cat /root/.mysql_secret

OEXaQuS8IWkG19Xs

3)查看mysql状态

[root@hadoop102 mysql-libs]# service mysql status

4)启动mysql

[root@hadoop102 mysql-libs]# service mysql start

2.4.3 安装MySql客户端

1)安装mysql客户端

[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm 2)链接mysql

[root@hadoop102 mysql-libs]# mysql -uroot -p OEXaQuS8IWkG19Xs

3)修改密码

mysql>SET PASSWORD=PASSWORD('000000');

4)退出mysql

mysql>exit

2.4.4 MySql中user表中主机配置

配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。

1)进入mysql

[root@hadoop102 mysql-libs]# mysql -uroot -p000000

2)显示数据库

mysql>show databases;

3)使用mysql数据库

mysql>use mysql;

4)展示mysql数据库中的所有表

mysql>show tables;

5)展示user表的结构

mysql>desc user;

6)查询user表

mysql>select User, Host, Password from user;

7)修改user表,把Host表内容修改为%

mysql>update user set host='%' where host='localhost';

8)删除root用户的其他host

mysql>delete from user where Host='hadoop102 ';

mysql>delete from user where Host='127.0.0.1';

mysql>delete from user where Host='::1';

9)刷新

mysql>flush privileges;

10)退出

mysql> quit;

2.5 Hive元数据配置到MySql

2.5.1 驱动拷贝

1)在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1.27.tar.gz驱动包[root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz

2)拷贝/opt/software/mysql-libs/mysql-connector-java-5.1.27目录下的

mysql-connector-java-5.1.27-bin.jar到/opt/module/hive/lib/

[root@hadoop102 mysql-connector-java-5.1.27]# cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

2.5.2 配置Metastore到MySql

1)在/opt/module/hive/conf目录下创建一个hive-site.xml

[atguigu@hadoop102 conf]$ touch hive-site.xml

[atguigu@hadoop102 conf]$ vi hive-site.xml

2)根据官方文档配置参数,拷贝数据到hive-site.xml文件中。

https://https://www.docsj.com/doc/768828405.html,/confluence/display/Hive/AdminManual+MetastoreAdmin

3)配置完毕后,如果启动hive异常,可以重新启动虚拟机。(重启后,别忘了启动hadoop 集群)

2.5.3 多窗口启动Hive测试

1)先启动MySQL

[atguigu@hadoop102 mysql-libs]$ mysql -uroot -p000000

查看有几个数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

2)再次打开多个窗口,分别启动hive

[atguigu@hadoop102 hive]$ bin/hive

3)启动hive后,回到MySQL窗口查看数据库,显示增加了metastore数据库mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| metastore |

| mysql |

| performance_schema |

| test |

+--------------------+

2.6 Hive常用交互命令

1)“-e”不进入hive的交互窗口执行sql语句

[atguigu@hadoop102 hive]$ bin/hive -e "select id from student;"

2)“-f”执行脚本中sql语句

(1)在/opt/module/datas目录下创建hivef.sql文件

[atguigu@hadoop102 datas]$ touch hivef.sql

文件中写入正确的sql语句

select *from student;

(2)执行文件中的sql语句

[atguigu@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql

(3)执行文件中的sql语句并将结果写入文件中

[atguigu@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql > /opt/module/datas/hive_result.txt

2.7 Hive其他命令操作

1)退出hive窗口:

hive(default)>exit;

hive(default)>quit;

在新版的oracle中没区别了,在以前的版本是有的:

exit:先隐性提交数据,再退出;

quit:不提交数据,退出;

2)在hive cli命令窗口中如何查看hdfs文件系统

hive(default)>dfs -ls /;

3)在hive cli命令窗口中如何查看hdfs本地系统

hive(default)>! ls /opt/module/datas;

4)查看在hive中输入的所有历史命令

(1)进入到当前用户的根目录/root或/home/atguigu

(2)查看. hivehistory文件

[atguigu@hadoop102 ~]$ cat .hivehistory

2.8 Hive常见属性配置

2.8.1 Hive数据仓库位置配置

1)Default数据仓库的最原始位置是在hdfs上的:/user/hive/warehouse路径下

2)在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default

数据库,直接在数据仓库目录下创建一个文件夹。

3)修改default数据仓库原始位置(将hive-default.xml.template如下配置信息拷贝到hive-site.xml文件中)

配置同组用户有执行权限

bin/hdfs dfs -chmod g+w /user/hive/warehouse

2.8.2 查询后信息显示配置

1)在hive-site.xml文件中添加如下配置信息,就可以实现显示当前数据库,以及查询表的头信息配置。

2)重新启动hive,对比配置前后差异

(1)配置前

(2)配置后

2.8.3 Hive运行日志信息配置

1)Hive的log默认存放在/tmp/atguigu/hive.log目录下(当前用户名下)。

2)修改hive的log存放日志到/opt/module/hive/logs

(1)修改/opt/module/hive/conf/hive-log4j.properties.template文件名称为

hive-log4j.properties

[atguigu@hadoop102 conf]$ pwd

/opt/module/hive/conf

[atguigu@hadoop102 conf]$ mv hive-log4j.properties.template hive-log4j.properties (2)在hive-log4j.properties文件中修改log存放位置

hive.log.dir=/opt/module/hive/logs

2.8.4 参数配置方式

1)查看当前所有的配置信息

hive>set;

2)参数的配置三种方式

(1)配置文件方式

默认配置文件:hive-default.xml

用户自定义配置文件:hive-site.xml

注意:用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。

(2)命令行参数方式

启动Hive时,可以在命令行添加-hiveconf param=value来设定参数。

例如:

[atguigu@hadoop103 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10;

注意:仅对本次hive启动有效

查看参数设置:

hive (default)> set mapred.reduce.tasks;

(3)参数声明方式

可以在HQL中使用SET关键字设定参数

例如:

hive (default)> set mapred.reduce.tasks=100;

注意:仅对本次hive启动有效。

查看参数设置

hive (default)> set mapred.reduce.tasks;

上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了。

尚硅谷大数据技术之ELK

第1章 Elasticsearch 概述 1.1 什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度 != 搜索 1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app 2)IT 系统的搜索:OA 软件,办公自动化软件,会议管理,日程管理,项目管理。 搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息 1.2 如果用数据库做搜索会怎么样? 如果用数据库做搜索会怎么样? select * from products where product_name list “%牙膏%”商品id 商品名称商品描述 1高露洁牙膏2中华牙膏3 佳洁士牙膏4其他牙膏京东商城搜索框 5 …… 1万条 京东商城后台商品表逐条遍历 1)比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符, 这个时候,每次都要对每条记录的所有文本进行扫描,判断包不包含我指定的这个关键词(比如说“牙膏”),效率非常低。 select * from products where product_name list “%生化机%” 2)还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果, 比如输入“生化机”,就搜索不出来“生化危机”。 用数据库来实现搜索,是不太靠 谱的。通常来说,性能会很差的。 1千字的商品描述 1千字的商品描述 用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。 1.3 什么是全文检索和Lucene ? 1)全文检索,倒排索引 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。

01_尚硅谷大数据之HBase简介

第1章HBase简介 1.1 什么是HBase HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE 技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable 利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google 运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。 1.2 HBase中的角色 1.2.1 HMaster 功能: 1) 监控RegionServer 2) 处理RegionServer故障转移 3) 处理元数据的变更 4) 处理region的分配或移除 5) 在空闲时间进行数据的负载均衡 6) 通过Zookeeper发布自己的位置给客户端 1.2.2 RegionServer 功能: 1) 负责存储HBase的实际数据 2) 处理分配给它的Region 3) 刷新缓存到HDFS 4) 维护HLog 5) 执行压缩

6) 负责处理Region分片 1.2.3 其他组件: 1) Write-Ahead logs HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 2) HFile 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 3) Store HFile存储在Store中,一个Store对应HBase表中的一个列族。 4) MemStore 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL 中之后,RegsionServer会在内存中存储键值对。 5) Region Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。 1.3 HBase架构

01_尚硅谷大数据之Hive基本概念

第1章Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层的实现是MapReduce 3)执行程序运行在Yarn上 1.2 Hive的优缺点 1.2.1 优点 1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手) 2)避免了去写MapReduce,减少开发人员的学习成本。 3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合; 4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 1.2.2 缺点 1)Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2)Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive调优比较困难,粒度较粗

1.3 Hive架构原理 HDFS MapReduce Meta store SQL Parser 解析器 Physical Plan 编译器Execution 执行器 Query Optimizer 优化器 Driver CLI JDBC Client Hive 架构 如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。 1)用户接口:Client CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive) 2)元数据:Metastore 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore 3)Hadoop 使用HDFS进行存储,使用MapReduce进行计算。 4)驱动器:Driver (1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。 (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

尚硅谷大数据技术之数仓开发规范

1.背景 为了避免底层业务变动对上层需求影响过大,屏蔽底层复杂的业务逻辑,尽可能简单、完整的在接口层呈现业务数据,建设高内聚松耦合的数据组织,使数据从业务角度可分割,显得尤为重要。从整个集团业务条线出发,形成数据仓库总体概念框架,并对整个系统所需要的功能模块进行划分,明确各模块技术细节,建设一套完整的开发规范。 2.分层规范 ODS(原始数据层):ODS层是数据仓库准备区,为DWD层提供基础原始数据。 DWD(明细数据层):和ODS粒度一致的明细数据,对数据进行去重,脏数据过滤,空处理,保证数据质量。 DWS(服务数据层):轻度汇总数据及建宽表(按主题)存放数据。 ADS(应用数据层):存放应用类表数据。 3.表规范 3.1 命名 维表命名形式:dim_描述 事实表命名形式:fact_描述_[AB] 临时表命名形式:tmp_ 正式表名_ [C自定义序号] 宽表命名形式:dws_主题_描述_[AB] 备份表命名形式:正式表名_bak_yyyymmdd 表命名解释: 1)表名使用英文小写字母,单词之间用下划线分开,长度不超过40个字符,命名一般控制在小于等于6级。 2)其中ABC第一位"A"时间粒度:使用"c"代表当前数据,"h"代表小时数据,"d"代表天

数据,"w"代表周数据,"m"代表月数据,"q"代表季度数据, "y"代表年数据。 3)其中ABC的第二位"B"表示对象属性,用"t"表示表,用"v"表示视图。 4)其中ABC的第三位"C"自定义序号用于标识多个临时表的跑数顺序。 3.2 注释 注释要结合表的英文名,要求注释简洁明了,体现出表的业务出处、主题和用途。3.3 存储格式 所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。在数仓中建表默认用的都是PARQUET存储格式,相关语句如下所示:STORED AS INPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat’ OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat’ 3.5 字符集 Hadoop和hive 都是用utf-8编码的,在建表时可能涉及到中文乱码问题,所以导入的文件的字符编码统一为utf-8格式。 3.6 约定 理论上在数仓落地的表不应该出现null未知类型,对于可能出现null的字段,如果为字符型统一为空字符串,如果是数值则给0。 4.字段规范 4.1 命名

尚硅谷大数据项目之实时项目2(日活需求)

第1章实时处理模块 1.1 模块搭建 添加scala框架 1.2 代码思路 1)消费kafka中的数据; 2)利用redis过滤当日已经计入的日活设备; 3)把每批次新增的当日日活信息保存到HBASE或ES中;

4)从ES中查询出数据,发布成数据接口,通可视化化工程调用。 1.3 代码开发1 ---消费Kafka 1.3.1 配置 1)config.properties # Kafka配置 kafka.broker.list=hadoop102:9092,hadoop103:9092,hadoop104:9092 # Redis配置 redis.host=hadoop102 rdis.port=6379 2)pom.xml com.atguigu.gmall2019.dw dw-common 1.0-SNAPSHOT org.apache.spark spark-core_2.11 org.apache.spark spark-streaming_2.11 org.apache.kafka kafka-clients 0.11.0.2 org.apache.spark spark-streaming-kafka-0-8_2.11 redis.clients jedis 2.9.0 io.searchbox

大数据技术之MySQL高级

尚硅谷大数据技术之MySQL高级 版本V3.0 第1章MySQL简介 1.1 什么是MySQL (1)MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 公司。 (2)Mysql是开源的,可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。 (3)MySQL使用标准的SQL数据语言形式。 (4)MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 (5)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。 1.2 在Linux上安装MySQL 1.2.1 检查当前系统是否安装过MySQL CentOS 6命令:rpm -qa|grep mysql 默认Linux在安装的时候,自带了mysql相关的组件。 先卸载系统自带的mysql,执行卸载命令rpm -e --nodeps mysql-libs 1

CentOS 7命令:rpm -qa|grep mariadb 不检查依赖卸载 检查/tmp目录的权限是否是满的 1.2.2 Mysql的安装 安装的版本是mysql 5.7,官网下载地址:https://www.docsj.com/doc/768828405.html,/downloads/mysql/ 1)通过Xft5文件传输工具将rpm安装包传输到opt目录下 2)执行rpm安装,必须按照下面的顺序安装 1)rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 2)rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm 3)rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 4)rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm 2

07_尚硅谷大数据之HBase优化

第7章HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。 1)关闭HBase集群(如果没有开启则跳过此步) [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 2)在conf目录下创建backup-masters文件 [atguigu@hadoop102 hbase]$ touch conf/backup-masters 3)在backup-masters文件中配置高可用HMaster节点 [atguigu@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters 4)将整个conf目录scp到其他节点 [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop103:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop104:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ 5)打开页面测试查看 0.98版本之前:http://hadooo102:60010 0.98版本及之后:http://hadooo102:16010 7.2 预分区 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey 范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据索要投放的分区提前大致的规划好,以提高HBase性能。 1)手动设定预分区 hbase> create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000'] 2)生成16进制序列预分区 create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'} 3)按照文件中设置的规则预分区 创建splits.txt文件内容如下: create 'staff3','partition3',SPLITS_FILE => 'splits.txt' 4)使用JavaAPI创建预分区

02_尚硅谷大数据之Hive安装

第2章Hive安装 2.1 Hive安装地址 1)Hive官网地址: https://www.docsj.com/doc/768828405.html,/ 2)文档查看地址: https://https://www.docsj.com/doc/768828405.html,/confluence/display/Hive/GettingStarted 3)下载地址: https://www.docsj.com/doc/768828405.html,/dist/hive/ 4)github地址: https://https://www.docsj.com/doc/768828405.html,/apache/hive 2.2 Hive安装部署 1)Hive安装及配置 (1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下 (2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面 [atguigu@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/ (3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive [atguigu@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive (4)修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh [atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh (5)配置hive-env.sh文件 (a)配置HADOOP_HOME路径 export HADOOP_HOME=/opt/module/hadoop-2.7.2 (b)配置HIVE_CONF_DIR路径 export HIVE_CONF_DIR=/opt/module/hive/conf 2)Hadoop集群配置 (1)必须启动hdfs和yarn [atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

13_尚硅谷大数据之常见错误及解决方案

第13章常见错误及解决方案 1)SecureCRT 7.3出现乱码或者删除不掉数据,免安装版的SecureCRT 卸载或者用虚拟机直接操作或者换安装版的SecureCRT 2)连接不上mysql数据库 (1)导错驱动包,应该把mysql-connector-java-5.1.27-bin.jar导入/opt/module/hive/lib的不是这个包。错把mysql-connector-java-5.1.27.tar.gz导入hive/lib包下。 (2)修改user表中的主机名称没有都修改为%,而是修改为localhost 3)hive默认的输入格式处理是CombineHiveInputFormat,会对小文件进行合并。 hive (default)> set hive.input.format; hive.input.format=https://www.docsj.com/doc/768828405.html,bineHiveInputFormat 可以采用HiveInputFormat就会根据分区数输出相应的文件。 hive (default)> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 4)不能执行mapreduce程序 可能是hadoop的yarn没开启。 5)启动mysql服务时,报MySQL server PID file could not be found! 异常。 在/var/lock/subsys/mysql路径下创建hadoop102.pid,并在文件中添加内容:4396 6)报service mysql status MySQL is not running, but lock file (/var/lock/subsys/mysql[失败])异常。 解决方案:在/var/lib/mysql 目录下创建:-rw-rw----. 1 mysql mysql 5 12月22 16:41 hadoop102.pid 文件,并修改权限为777。 附录:Sqoop常用命令及参数手册 这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。

7_尚硅谷大数据之HDFS概述

一HDFS概述 1.1 HDFS产生背景 随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。 1.2 HDFS概念 HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。 1.3 HDFS优缺点 1.3.1 优点 1)高容错性 (1)数据自动保存多个副本。它通过增加副本的形式,提高容错性; (2)某一个副本丢失以后,它可以自动恢复。 2)适合大数据处理 (1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据; (2)文件规模:能够处理百万规模以上的文件数量,数量相当之大。 3)流式数据访问,它能保证数据的一致性。 4)可构建在廉价机器上,通过多副本机制,提高可靠性。 1.3.2 缺点 1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。 2)无法高效的对大量小文件进行存储。 (1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的; (2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。 3)并发写入、文件随机修改。

(1)一个文件只能有一个写,不允许多个线程同时写; (2)仅支持数据append(追加),不支持文件的随机修改。 1.4 HDFS组成架构 HDFS的架构图 这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。 1)Client:就是客户端。 (1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行存储; (2)与NameNode交互,获取文件的位置信息; (3)与DataNode交互,读取或者写入数据; (4)Client提供一些命令来管理HDFS,比如启动或者关闭HDFS; (5)Client可以通过一些命令来访问HDFS; 2)NameNode:就是Master,它是一个主管、管理者。 (1)管理HDFS的名称空间; (2)管理数据块(Block)映射信息; (3)配置副本策略; (4)处理客户端读写请求。 3) DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。 (1)存储实际的数据块;

高清现场:尚硅谷区块链、AI技术沙龙人气爆棚!

下一届技术沙龙即将举办 我们在北京相聚 敬请期待! 2018年4月1日,来自各企业的IT技术人员、编程爱好者、教育从业者等百余位专业技术人士,齐聚深圳西部硅谷大厦,参加了由尚硅谷教育举办的“渔人节”IT技术交流研讨会。尚硅谷教育知名讲师韩顺平、宋红康、封捷等做了主题演讲,尚硅谷教育创始人佟刚老师(学员昵称:刚哥)出席了研讨会。 签到处排成了长队

座无虚席的沙龙现场,不得不临时加座 此次沙龙,是深圳少有的IT互联网专业技术沙龙。原本规划30人的规模,因报名太多,不得不连夜紧急寻找更大的场地,以尽可能多地满足大家的参会需求。沙龙的议题从程序员创业,到AI(人工智能)、区块链,专属IT从业者的聚会,专业性和活跃感并存。 各位嘉宾具体都分享了什么内容呢?一起来看看吧。 一 刚刚录制了Linux教程的韩顺平老师做了开场演讲。

韩老师分享了自己的创业历程和心得,以及加入尚硅谷的前因后果(详见:创业不易,尚硅谷教育延续初心)。韩老师说,从事一个行业,经验累积非常重要,所有的经历都是收获;软件工程师作为专业技术人员,更应该选对方向,努力不懈。 二 科技发展瞬息万变,每个时代都有每个时代的领军人物和代表性的技术方向,人工智 能正是当今时代的主角之一。 人类制造人工智能,目的是为了要造出机器人,和人差不多吗?或者换句话说,人类 今天能够站在食物链的顶端,靠的是什么呢?在引人深思的发问中,宋红康老师的《无学习,不AI》演讲开始了。 宋老师对人工智能的发展历程、深度学习崛起的时代背景和应用场景,以及常见的机 器学习算法、深度学习网络结构的技术趋势及应用,进行了生动幽默的全景式展现。 最后,以是否出现不可避免的人机大战收尾,引发全场思考。

05_尚硅谷大数据之Kafka producer拦截器(interceptor)

第5章Kafka producer拦截器(interceptor) 5.1 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。 对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer允许用户指定多个interceptor 按序作用于同一条消息从而形成一个拦截链(interceptor chain)。Intercetpor的实现接口是org.apache.kafka.clients.producer.ProducerInterceptor,其定义的方法包括: (1)configure(configs) 获取配置信息和初始化数据时调用。 (2)onSend(ProducerRecord): 该方法封装进KafkaProducer.send方法中,即它运行在用户主线程中。Producer确保在消息被序列化以及计算分区前调用该方法。用户可以在该方法中对消息做任何操作,但最好保证不要修改消息所属的topic和分区,否则会影响目标分区的计算 (3)onAcknowledgement(RecordMetadata, Exception): 该方法会在消息被应答或消息发送失败时调用,并且通常都是在producer回调逻辑触发之前。onAcknowledgement运行在producer的IO线程中,因此不要在该方法中放入很重的逻辑,否则会拖慢producer的消息发送效率 (4)close: 关闭interceptor,主要用于执行一些资源清理工作 如前所述,interceptor可能被运行在多个线程中,因此在具体实现时用户需要自行确保线程安全。另外倘若指定了多个interceptor,则producer将按照指定顺序调用它们,并仅仅是捕获每个interceptor可能抛出的异常记录到错误日志中而非在向上传递。这在使用过程中要特别留意。 5.2 拦截器案例 1)需求: 实现一个简单的双interceptor组成的拦截链。第一个interceptor会在消息发送前将时间戳信息加到消息value的最前部;第二个interceptor会在消息发送后更新成功发送消息数或

尚硅谷大数据技术之Phoenix

第1章Phoenix简介 1.1Phoenix定义 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1.2 Phoenix特点 1) 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。 2) 操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改。 3) 完美支持Hbase二级索引创建。 1.3 Phoenix架构 Phoenix架构

1.4 Phoenix的作用 第2章Phoenix快速入门 2.1 Phoenix安装部署 2.1.1 官方网址: 2.1.2 上传jar包到/opt/software/ 2.1.3 复制server和client这俩个包拷贝到各个节点的hbase/lib 在phoenix目录下 向每个节点发送server jar

向每个节点发送client jar 2.1.4 在root权限下给/etc/profile 下添加如下内容 2.1.5 启动Zookeeper,Hadoop,Hbase 2.1.6 启动Phoenix 2.2 phoenix表操作 2.2.1 显示所有表

2.2.2 创建表 如下显示: 在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。 2.2.3 插入记录 2.2.4 查询记录 2.2.5 删除记录 2.2.6 删除表 2.2.7 退出命令行 2.3 phoenix表映射 2.3.1 Phoenix和Hbase表的关系 默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。

大数据技术之Atlas(5元数据管理)

尚硅谷大数据技术之Atlas(元数据管理) 第1章Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 1)表与表之间的血缘依赖 2)字段与字段之间的血缘依赖 1

2 1.2 Atlas 架构原理 Atlas 架构原理 类型系统(Type System): 用户为他们想要管理的元数据对象定义模型。Type System 称为“实体”的“类型”实例,表示受管理的实际元数据对象。 图形引擎(Graph Engine): Atlas 在内部使用Graph 模型持久保存它管理的元数据对象。 采集/导出(Ingest/Export):采集组件允许将元数据添加到Atlas 。同样,“导出”组件将Atlas 检测到的元数据导出。API: Atlas 的所有功能都通过REST API 向最终用户暴露,该API 允许创建,更新和删除类型和实体。它也是查询和发现Atlas 管理的类型和实体的主要机制。 Messaging: 除了API 之外,用户还可以选择使用基于Kafka 的消息传递接口与Atlas 集成。 Metadata Sources :目前,Atlas 支持从以下来源提取和管理元数据:HBase 、Hive 、Sqoop 、Storm 、Kafka Admin UI: 该组件是一个基于Web 的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似SQL 的查询语言,可用于查询Atlas 管理的元数据类型和对象。 Ranger Tag Based Policies :权限管理模块Business Taxonomy :业务分类 Metadata Store:采用HBase 来存储元数据Index Store:采用Solr 来建索引 第2章 Atlas 安装及使用 1) Atlas 官网地址:s:https://www.docsj.com/doc/768828405.html,/ 2)文档查看地址:s:https://www.docsj.com/doc/768828405.html,/0.8.4/index.html 3)下载地址:s:https://www.docsj.com/doc/768828405.html,/dyn/closer.cgi/atlas/0.8.4/apache-atlas-0.8.4-sources.tar.gz

尚硅谷大数据项目之实时项目5(灵活分析需求)

1.1 灵活查询的场景 数仓中存储了大量的明细数据,但是hadoop存储的数仓计算必须经过mr ,所以即时交互性非常糟糕。为了方便数据分析人员查看信息,数据平台需要提供一个能够根据文字及选项等条件,进行灵活分析判断的数据功能。 2.2 需求详细 输入参数 返回结果

2.1 T+1 模式 2.1.1 实现步骤 1)利用sqoop等工具,从业务数据库中批量抽取数据; 2)利用数仓作业,在dws层组织宽表(用户购买行为); 3)开发spark的批处理任务,把dws层的宽表导入到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.1.2 特点 优点:可以利用在离线作业处理好的dws层宽表,直接导出一份到ES进行快速交互的分析。缺点:因为要用离线处理的后的结果在放入ES,所以时效性等同于离线数据。

2.2 T+0 模式 2.2.1 实现步骤 1)利用canal抓取对应的数据表的实时新增变化数据,推送到Kafka; 2)在spark-streaming中进行转换,过滤,关联组合成宽表的结构; 3)保存到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.2.2 特点 优点:实时产生数据,时效性非常高。 缺点:因为从kafka中得到的是原始数据,所以要利用spark-streaming要进行加工处理,相对来说要比批处理方式麻烦,比如join操作。 第3章实时采集数据 3.1 在canal 模块中增加要追踪的表 代码 public class CanalHandler { private List rowDatasList; String tableName; CanalEntry.EventType eventType;

尚硅谷大数据项目之实时项目4(预警需求)

第1章需求分析 1.1 简介 实时预警,是一种经常出现在实时计算中的业务类型。根据日志数据中系统报错异常,或者用户行为异常的检测,产生对应预警日志。预警日志通过图形化界面的展示,可以提醒监控方,需要及时核查问题,并采取应对措施。 1.2 需求说明 需求:同一设备,5分钟内三次及以上用不同账号登录并领取优惠劵,并且在登录到领劵过程中没有浏览商品。达到以上要求则产生一条预警日志。 同一设备,每分钟只记录一次预警。 1.3 预警日志格式

第2章整体流程设计 2.1 框架流程 2.2 开发思路 1)从kafka中消费数据,根据条件进行过滤筛选,生成预警日志;2)预警日志保存到ElasticSearch中; 3)利用Kibana快速搭建可视化图形界面。 第3章实时计算模块 3.1 筛选条件分析 同一设备(分组) 5分钟内(窗口) 三次不同账号登录(用户) 领取优惠券(行为) 没有浏览商品(行为)

同一设备每分钟只记录一次预警(去重)3.2 数据处理流程图 3.3 代码开发 3.3.1 事件日志样例类– EventInfo case class EventInfo(mid:String, uid:String, appid:String, area:String, os:String, ch:String, `type`:String, evid:String, pgid:String, npgid:String, itemid:String, var logDate:String, var logHour:String, var ts:Long)

3.3.2 预警日志样例类–CouponAlertInfo case class CouponAlertInfo(mid:String, uids:java.util.HashSet[String], itemIds:java.util.HashSet[String], events:java.util.List[String], ts:Long) 3.3.3 预警业务类– AlertApp import com.alibaba.fastjson.JSON import com.atguigu.gmall.constant.GmallConstants import com.atguigu.gmall2019.realtime.bean.{CouponAlertInfo, EventInfo} import com.atguigu.gmall2019.realtime.util.{MyEsUtil, MyKafkaUtil} import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.spark.SparkConf import org.apache.spark.streaming.dstream.{DStream, InputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} import scala.util.control.Breaks._ object AlertApp { def main(args: Array[String]): Unit = { val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("event_app") val ssc = new StreamingContext(sparkConf,Seconds(5)) val inputDstream: InputDStream[ConsumerRecord[String, String]] = MyKafkaUtil.getKafkaStream(GmallConstants.KAFKA_TOPIC_EVENT,ssc) //1 格式转换成样例类 val eventInfoDstream: DStream[EventInfo] = inputDstream.map { record => val jsonstr: String = record.value() val eventInfo: EventInfo = JSON.parseObject(jsonstr, classOf[EventInfo]) eventInfo } //2 开窗口 val eventInfoWindowDstream: DStream[EventInfo] = eventInfoDstream.window(Seconds(30),Seconds(5)) //3同一设备分组 val groupbyMidDstream: DStream[(String, Iterable[EventInfo])] = eventInfoWindowDstream.map(eventInfo=>(eventInfo.mid,eventInfo)). groupByKey() //4 判断预警 // 在一个设备之内 // 1 三次及以上的领取优惠券 (evid coupon) 且 uid都不相同 // 2 没有浏览商品(evid clickItem) val checkCouponAlertDStream: DStream[(Boolean, CouponAlertInfo)] = groupbyMidDstream.map { case (mid, eventInfoItr) =>

04_尚硅谷大数据之DDL数据定义

第4章DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) 3)创建一个数据库,指定数据库在HDFS上存放的位置 hive (default)> create database db_hive2 location '/db_hive2.db'; 4.2 修改数据库 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。 hive (default)> alter database db_hive set dbproperties('createtime'='20170830'); 在mysql中查看修改结果 hive> desc database extended db_hive; db_name comment location owner_name owner_type parameters db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguigu USER {createtime=20170830} 4.3 查询数据库 4.3.1 显示数据库 1)显示数据库

hive> show databases; 2)过滤显示查询的数据库 hive> show databases like 'db_hive*'; OK db_hive db_hive_1 4.3.2 查看数据库详情 1)显示数据库信息 hive> desc database db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 2)显示数据库详细信息,extended hive> desc database extended db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 4.3.3 切换当前数据库 hive (default)> use db_hive; 4.4 删除数据库 1)删除空数据库 hive>drop database db_hive2; 2)如果删除的数据库不存在,最好采用if exists判断数据库是否存在 hive> drop database if exists db_hive2; 3)如果数据库不为空,可以采用cascade命令,强制删除

相关文档
相关文档 最新文档