大数据数据仓库,一般来说底层都是建设在hive当中,利用hadoop的hdfs分布式文件系统,可以替代传统的mysql和oracle等数据库,进而来存储上百TB、PB等级别的大数据集。如果公司业务中,每天数据增长多,也可以使用hive存储数据。跟传统的关系型数据库不同,hive数据存储在hdfs上,底层使用mapreduce计算数据,主要做大数据的分析使用。
在hadoop集群上安装hive
一,先在linux上安装mysql,存储hive元数据信息。
1、通过下面的命令,获取mysql 源安装包,直接复制,浏览器打开下载即可
https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2、在Linux上安装刚下载的 mysql 源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
3、使用命令,检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
4、使用 yum 命令安装mysql
yum install mysql-community-server
5、配置mysql的文件目录信息
使用下面的命令,查看mysql配置文件加载顺序:
mysqld --help --verbose|grep -A1 -B1 cnf
修改根目录 /etc/my.cnf 配置文件内的文件目录
datadir=/data/mysql/data
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log-error=/data/mysql/log/mysqld.log
注意:
SQL_MODE:通过对其正确的设置可以完成一些约束检查的工作,设置时,在配置文件my.cnf 中配置进行全局的设置。
STRICT_TRANS_TALES(严格模式):只对支持事务的表启用严格模式。
NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户。
NO_ENGINE_SUBSTITUTION:启用后,若需要的存储引擎被禁用或未编译,则抛出错误;未启用时将用默认的存储引擎代替,并抛出一个异常。
6、创建 mysql 的文件目录
mkdir -p /data/mysql/data
mkdir -p /data/mysql/log
7、使用下面的命令生成首次登录的随机密码
mysqld --initialize
通过上面命令会在 /data/mysql/log/mysqld.log 中生成随机码,随机码用来首次登录mysql。
8、修改mysql 文件目录的权限,把所有者修改为 mysql 用户
chown -R mysql:mysql /data/mysql
9、启动mysql
systemctl start mysqld.service
10、 关闭并重启mysql
systemctl stop mysqld.service
systemctl start mysqld.service
请注意:如果再次启动报错,就重启Linux 系统。
11、用生成的随机密码登录mysql
mysql -uroot -p xxx
12、使用mysql密码
用生成的随机密码登录进入 mysql 命令行后,需要重置密码,以确保账户安全。
在重置密码时,如果不想密码设置得那么复杂,需要设置validate_password_policy 参数:
rpm -qa | grep -i mysql
这样,判断密码的标准就基于密码的长度了,这个由validate_password_length参数来决定。
validate_password_length默认是8所以密码长度必须大于8。
设置密码:
set password=PASSWORD('1234abcd')
设置完密码后,用新密码重新登录。因为mysql5.7是默认安装validate_password插件 ,那么如何验证validate_password插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。
rpm -qa | grep -i mysql
安装mysql错误解决:报错解决,如果启动一直报错,根据报错原因解决不了问题了,可以直接卸载mysql,然后重新安装。
使用下面的命令 查看已经安装过的组件:
yum -y remove mysql57-community-release-el7-11.noarch
yum -y remove mysql-community-common-5.7.19-1.el7.x86_64
之后用yum -y remove 卸载所有跟mysql有关的组件
yum -y remove mysql57-community-release-el7-11.noarch
yum -y remove mysql-community-common-5.7.19-1.el7.x86_64
卸载后再用 rpm -qa | grep -i mysql 查看是否全部卸载完毕。
删除/data/mysql 目录
rm -rf /data/mysql
二、 在linux上安装 hive
1、用root用户上传并解压hive的tar安装包,可以使用xftp上传安装包。
#解压到/usr/local/目录下
tar -xzf ./apache-hive-2.1.1-bin.tar.gz -C /usr/local/
2、创建hive-2.1.1-bin的软链接
ln -s /usr/local/apache-hive-2.1.1-bin /usr/local/hive
3、修改/usr/local/hive/apache-hive-2.1.1-bin目录所有者为hadoop用户
chown -R hadoop:hadoop /usr/local/apache-hive-2.1.1-bin
4、配置环境变量
增加HIVE_HOME和HIVE_CONF_DIR
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=/usr/local/hive/conf
使用下面的命令,更新刚配置的环境变量:source /etc/profile
5、修改配置
切换到hadoop用户,修改hive配置在/usr/local/hive/conf目录。先备份原来的配置:
cp -R /usr/local/hive/conf /usr/local/hive/conf_back
上传hive-site.xml 到 /user/local/hive/conf/ 目录下。
把hive-env.sh.template和mv hive-log4j2.properties.template改名为如下名:
mv hive-env.sh.template hive-env.sh
hive-log4j2.properties
6、在mysql中创建hive用的数据库和hive用户
--登录mysql
mysql -uroot -p'1234abcd'
set global validate_password_policy=0;
--创建hive用户
CREATE USER 'hive'@'%' IDENTIFIED BY '1234abcd';
--在mysql中创建hive_meta数据库
create database hive_meta default charset utf8 collate utf8_general_ci;
--给hive用户增加hive_meta数据库权限
grant all privileges on hive_meta.* to 'hive'@'%' identified by '1234abcd';
--更新配置
flush privileges;
7、拷贝mysql驱动jar包 到/usr/local/hive/lib/
8、如果报错,删除冲突的log4j日志包
rm -f /usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar
9、在HDFS上创建hive使用的数据目录
hadoop fs -mkdir -p /hive/warehouse
hadoop fs -chmod -R 777 /hive
10、hive初始化mysql
schematool -dbType mysql -initSchema
11、给mysql中root用户开通所有权限,方便在客户端进行查看
grant all privileges on *.* to root@'%' identified by "1234abcd";
#更新配置使之生效
flush privileges;
使用客户端查看,看hive_meta库中是否已经初始化好hive表。
往期回顾
|| 大数据之数据仓库,使用Hive仓库遇到的哪些事
|| 大数据仓库,Hive复杂的数据结构,SQL列转行操作
|| 数据仓库,Hive中使用 != 或 <>; 符号进行条件过滤时的坑