Linux中基于mysql,hive安装及操作
实验背景
MySQL是一个关系数据库管理系统,由瑞典MySQL AB公司开发,目前属于Qracle旗下的产品。MySQL是流行的关系数据库管理系统,在Web应用方面,MySQL是最好的关系数据库管理系统应用软件之一。
HIVE是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的hiveSQL 语言实现数据查询,所有hive 的数据都存储在Hadoop 兼容的文件系统(例如,Amazon S3、HDFS)中。. hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中hive 设定的目录下,因此,hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。
发音:skup)是一款开源的工具,主要用于在Hadoop (Hive)与传统的数据库 (mysql、postgresql…)间进行数据的传递,可以将一个 关系型数据库 (例如 : MySQL,Oracle,Postgres 等) 中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
实验目的
我们可以使用sqoop工具,将业务数据库mysql或者oracle中的数据落地到hive表中,以方便后续的大数据统计分析。
实验环境
VirtualBox 6.1.14, Ubuntu 16.04,mysql-connector-java-5.1.40,apache-hive-1.2.1-bin,sqoop-1.4.7
实验任务及完成过程
任务一:安装下载mysql,所以操作mysql是为基础,然后再进行简单的操作介绍
任务二:安装hive,与mysql互通,hive与本地文件互传,hive与分布式数据互通,再做一个实例
MYSQL
安装MySQL以及问题处理
(1)更新软件源,安装mysql
sudo apt-get update
sudo apt-get install mysql-server
(2)启动时可能遇到密码错误原因,直接跳过验证密码,在sudo vim /etc/mysql/my.cnf中编辑加入两行代码
[mysqld]
skip-grant-tables
MySQL的启动
(1)开启,关闭mysql
service mysql stop
service mysql start
(2)查看是否开启进程
ps ajx|grep xxx比如mysql,redis
MySQL创建数据库和数据表
(1)创建数据库,删除数据库
CREATE DATABASEexample;
DROP DATABASEexample;
(2)创建表,例:
CREATE TABLEstudent (-> id int,-> name varchar(20)->);
(3)查看数据库
show databas
HIVE
安装过程和配置环境变量
(1)安装和配置环境变量
sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local
cd /usr/local/
sudo mv apache-hive-1.2.1-bin hive
sudo chown -R hadoop:hadoop hive
vim ~/.bashrc
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
(2) 配置文件
cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml
vim hive-site.xml
(3) hive需要配置MySQL JDBC
cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz
cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
(4)root密码为空的时候配置文件中下面这句
skip-grant-tables
(5) 配置hive连接mysql,mysql给权限给hive
reate database hive;
#需要先输入下面这句话,才能正常运行
flush privileges;
grant all on *.* to hive@localhost identified by 'hive';
基础操作
(1)开启进程
cd /usr/local/hadoop
./sbin/start-dfs.sh
(2)进入hive打开hive
cd /usr/local/hive
./bin/hive
(3)创建数据库
create database hive;
create database if not exists hive;
(3)进入hive数据库,创建数据表,但是会出现一点点问题
use hive;
create table if not exists usr(id bigint,name string,age int);
create table if not exists hive.usr(id bigint,name string,age int)location ‘/usr/local/hive/warehouse/hive/usr’;
(4)解决方法
#修改字符
create table mypercent(id bigint,name string,age int)
row format delimited fields terminated by ',';
(5)删除数据库,数据表
#删除数据库
drop database hive;
(6)无论有没有这个数据库都不会报错的删除
drop database if exists hive;
(7)加上cascade关键字,可以删除当前数据库和数据表
drop database if exists hive cascade;
(8)删除表
drop table if exists usr;
(9)删除视图
drop view if exists little_usr;
(10)查看表,查看数据库
show databases;
use hive;
show tables;
(11)查看基本信息
escribe hive.usr;
describe hive.little_usr;
#查看usr中的id
describe extended hive.usr.id;
装载操作
(1)把xxx数据文件装置到xxx表中并且覆盖原有文件
load data local inpath ‘数据路径’ overwrite into table xxx;
(2)把xxx数据文件装置到xxx表中并且不覆盖原有文件
load data local inpath ‘数据路径’ into table xxx;
#也就是覆盖用overwrite,不覆盖用into
(2)把在hdfs中的xxx数据文件装置到xxx表中并且覆盖原有文件
load data inpath ‘hdfs://master_server/数据路径’ overwrite into table xxx;
hive实例
(1)在本地创建数据
cd /usr/local/hadoop
vim employees.txt
#存入数据
(1)本地数据传入hive
cd /usr/local/hadoop
vim employees.txt
#存入数据
load data local inpath '/usr/local/hadoop/employees.txt' into table employee;
select * from employee
(2)在分布式目录中查看hive内表信息,先查看地址,然后再查看信息
hadoop fs -lsr /user/
hadoop fs -text /user/hive/warehouse/myhive.db/employee/employees.txt
(3)在hive中查看本地数据
!ls /usr/local/hadoop
(4)在hive中执行hdfs
dfs -ls /;