开发者学堂课程【快速掌握 Hadoop 集成 Kerberos 安全技术:配置和启动测试 HIVE】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/708/detail/12568
配置和启动测试 HIVE
1.创建 hive 使用的账户:
useradd hive-ghadoopr 执行 chown -Rhive:hadoop /bigdata/hive-1.1.0-cdh5.14.4(授权语句)
hive 装在 cdn0上,所以在 root 下执行 useradd hive-ghadoopr,把 bigdata 安装好的 hive 来配置成 hive 权限
2.创建 hive 对应的 kerberos 账户
在 cdhe 节点
kadmin 进入 kerberos 的 admin 后台输入密码
addprinc -randkeyhive/cdheitcast.cniTcASt.Cn
创建这样一个用户
ktadd -k/etc/securitv/kevtabs/hive.kevtab hive/cdheitcast.cneITCAST.CN
创建对应的 kevtabs 文件
chown hive hadoop hivekeytab
把他的权限改成 hive 所属
chmod 400 hive.keytab
改为400的权限
得到
-r-------- 1 hive hadoop 418 Sep 26 17:07 hive.keytab
这里多了 hive.keytab
3.上传安装包中提供的 mysg1-connector-java-5.1.33.jar 到 hive 的 lib 目录下,上传完成后 hive 就能够链接 mysg1-connector 了。
4.因为 hive 的原数据是保存到 mysg1-connector 所以要为 hive 安装mysql yum install -y mysgl-server mysgl mysgl-devel,运行。
5.安装好后启动和设置 mysql
启动: service mysald start
开机自动启动:chkconfig mysgld on
设置初始密码为 root:/usr/bin/mysqladmin -u root password 'root',密码 root
6.验证登录 mysql -uroot -p root
7.配置 hive-env.sh
进入 cd /bigdata/hive-1.1.0-cdh5.14.4/conf/文件夹里面
cp hive-env.sh.template hive-env.sh
# vim hivp-env.sh
新增
将以下代码复制进来,保存。
export JAVA_HOME=/usr/local/jdk1.8.0_221
export HADOOP_HOME=/bigdata/hadoop-2.6.0-cdh5.14.4
export HIVE_HOME=/bigdata/hive-1.1.0-cdh5.14.4
export HIVE_CONF_DIR=/bigdata/hive-1.1.0-cdh5.14.4/conf
8. 配置 hive-site.xml
直接创建 vim hive-site.xml 新文件,把以下内容复制,
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.ido.option.ConnectionDriverName</name>
<value>com.mysq1.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.opticn.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>KERBEROS</value>
</property>
<property>
<name>hive.server2.authentication.kerberosprincipal</name>
<value>hive/_HOST@ITCAST.CN</value>
</property>
<property>
<name>hive.server2.authentication.kerberos.keytab</name>
<value>/etc/security/keytabs/hive.keytab</value>
</property>
<property>
<name>hive.metastore.sasl.enabled</name><value>true</value>
</property>
<property>
<name>hive.metastore.kerberos.keytabfile</name>
<value>/etc/security/keytabs/hivekeytab</value>
</property>
<property>
<name>hive.metastorekerberosprincipal</name>
<value>hive/_HOST@ITCAST.CN</value>
</property>
<property>
<name></name><value></value>
</property>
</configuration>
hive 的配置其实也很简单,比如 ConnectionURL 的链接,还有驱动和账户,包括密码等等,下面的配置就是 cookwos 的相关,比如说 hive 的安全认证使用 cookwos 进行认证,同样他还需要 cookwos 账户,这个账户同样是 hive,一个 host 的转译,他还需要ktable文件,这里需要来启动一下 metstore 包括还有一个 manerstorp 需要使用的文件,同样共用这个文件就可以了,还有需要使用的账户。
9.初始化 hive 源数据库:bin/schematool -dbType mysql -initSchema -verbose xm1
这里是使用 schematool 工具,数据管理型是 mysql,执行 initSchema,verbose显示输出。多了非常多的表,说明初始化完成了
10.认证 hive 的账户:
kinit-kt /etc/security/keytabs/hive.kevtab hive/cdh0.itcast.cn@ITCAST.CN
Hive 就成功认证到 hive 账户下
11.启动 hive 相关服务
启动 metastore:nohup bin/hive --service metastore>metastore.log 2>&1 &
输入 cd /bigdata/hive-
,执行到这样的目录下,执行命令,把日志输出到 metastore.log 里,2>&1 &表示在后台运行,RunJar 就是进程
启动 hiveserver2: nohup bin/hive --service hiveserver2 >hs2.log 2>&1 &
多了 RunJar,就是 hiveserver2。
12.测试 hive
执行 bin/hive,没有问题后创建数据库叫做 create database test;
13.测试 bin/beeline
执行 bin/beeline
进入后执行:!Connect
idbc:hive2://cdh0.itcast.cn:10000/default;principal=hive/cdh0.itcast.cn@ITCAST.CN
一定要加这句话连接成功
成功连接后执行:create table test_temp(id int, name string, address string)
多了一个表则代表没问题:
然后插入执行: insert into test temp values(1, "hahaha", "beijing"), (2, "heiheihei", "shanghai"), (3."hohoho","shenzhen"):
执行: select * from test_temp;
把这个目录给770的权限,再重新执行,会看到插入的数据被正确查出来了,说明 hive 被正确查询出来了。