CentOS7+hadoop2.8.0+hive2.1.1
参考链接: https://blog.csdn.net/qq_39615245/article/details/83049123
有三台虚拟机,以 vm1,vm2,vm3代替,vm1位namenode,其他两个为datanade
下载链接: http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz
此处新建一台虚拟机,命名为docker,通过docker安装mysql,IP地址为:192.168.191.131
参考链接: https://blog.csdn.net/qq_39615245/article/details/82710100
通过docker拉取mysql镜像
docker pull mysql:5.6
等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.6的镜像。
docker images |grep mysql
mysql 5.6 2c0964ec182a 3 weeks ago 329 MB
运行容器
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.621cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e
命令说明:
查看容器启动情况-p 3306:3306: 将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d: 将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs: 将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql : 将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456: 初始化 root 用户的密码。
查看镜像启动状态:
CONTAINER ID IMAGE COMMAND ... PORTS NAMES21cb89213c93 mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
安装成功:用户名root 密码:123456 本地可连接
通过ftp工具上传hive包到/opt/hive,并解压到当前文件夹,解压命令为:
tar -zxvf apache-hive-2.1.1-bin.tar.gz
vi /etc/profile
在配置文件左后增加hive相关的环境变量配置
export JAVA_HOME=/opt/java/jdk1.8.0_121
export HADOOP_HOME=/opt/hadoop/hadoop-2.8.0
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export HIVE_HOME=/opt/hive/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin:$PATH
保存后,执行命令使其生效:
source /etc/profile
以下按照流程一步步走即可
使用hadoop新建两个hdfs目录
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/
给刚才新建的目录赋予读写权限,执行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod 777 /tmp/hive
进入/opt/hive/apache-hive-2.1.1-bin/conf目录,新建hive-site.xml文件并配置
cd /opt/hive/apache-hive-2.1.1-bin/conf
将hive-default.xml.template文件复制一份,并且改名为hive-site.xml,命令是:
cp hive-default.xml.template hive-site.xml
通过ftp将hive-site.xml下载到本地,打开进行配置否覆盖vm1上的原文件
将hive-site.xml文件中的所有
${system:java.io.tmpdir}替换为/opt/hive/tmp,
${system:user.name}都替换为root
搜索javax.jdo.option.ConnectionURL,将该name对应的value修改为MySQL的地址,例如:
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.191.131:3306/hive?createDatabaseIfNotExist=true
搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径,例如:
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:
javax.jdo.option.ConnectionUserName
root 搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:
javax.jdo.option.ConnectionPassword
123456
搜索hive.metastore.schema.verification,将对应的value修改为false:
hive.metastore.schema.verification
false
将更改好的hive-site.xml文件覆盖原文件
将MySQL驱动包上载到lib目录
进入目录 /opt/hive/apache-hive-2.1.1-bin/conf
cd /opt/hive/apache-hive-2.1.1-bin/conf
将hive-env.sh.template文件复制一份,并且改名为hive-env.sh,命令是:
cp hive-env.sh.template hive-env.sh
打开hive-env.sh配置并且添加以下内容:
export HADOOP_HOME=/opt/hadoop/hadoop-2.8.0
export HIVE_CONF_DIR=/opt/hive/apache-hive-2.1.1-bin/conf
export HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.1.1-bin/lib
对MySQL数据库进行初始化,进入到hive的bin目录 执行命令:
cd /opt/hive/apache-hive-2.1.1-bin/bin
对数据库进行初始化,执行命令:
schematool -initSchema -dbType mysql
执行成功后,mysql数据库中的hive库里已经有一堆表创建好了
进入到hive的bin目录执行命令:
cd /opt/hive/apache-hive-2.1.1-bin/bin
执行hive脚本进行启动,执行命令:
./hive
hive> 出现即可
创建数据库
create database hive_test
返回ok说明创建成功
use hive_test;
创建表
create table student(id int,name string) row format delimited fields terminated by '\t';
返回ok说明创建成功
将文件数据写入表中
(1)在/opt/hive目录内新建一个文件
执行Linux命令(最好是重新打开一个终端来执行):
touch /opt/hive/student.txt
往文件中添加以下内容:
001 zhangsan
002 lisi
003 wangwu
004 zhaoliu
005 chenqi
说明:ID和name直接是TAB键,不是空格,因为在上面创建表的语句中用了terminated by '\t'所以这个文本里id和name的分割必须是用TAB键,还有就是行与行之间不能有空行,否则下面执行load,会把NULL存入表内,该文件要使用unix格式,如果是在windows上用txt文本编辑器编辑后在上载到服务器上,需要用工具将windows格式转为unix格式,例如可以使用Notepad++来转换。
完成上面的步骤后,在磁盘上/opt/hive/student.txt文件已经创建成功,文件中也已经有了内容,在hive命令行中执行加载数据的hive命令:
load data local inpath '/opt/hive/student.txt' into table hive_test.student;
执行命令,查看是否把刚才文件中的数据写入成功,hive命令是:
select * from student;
说明:因为什么的操作使用use hive_test;指定了数据库,所以这里直接用表名student,如果没有指定数据库,请把这个语句换成
select * from hive_test.student;
数据出现即可
http://192.168.191.133:50070/explorer.html#/user/hive/warehouse/hive_test.db
安装hive成功