hive以hadoop集群为基础,提供hdfs的SQL支持;
hive一般可以以mysql为元数据存储,默认Derby;hadoop,hive安装自行百度吧;
介绍hive的远程访问:
未配置之前使用beeline的话,每次都要为连接输入用户名密码,较为麻烦;
实现目标:在非集群节点上敲beeline命令,直接进入到hive的命令行
1,在hive服务的安装节点的hive-site.xml配置文件中添加以下配置,配置beeline的远程访问用户名和密码
<property> <name>hive.server2.thrift.client.user</name> <value>root</value> <description>Username to use against thrift client</description> </property> <property> <name>hive.server2.thrift.client.password</name> <value>password</value> <description>Password to use against thrift client</description> </property>
2,保证hadoop集群环境正常运行,另外重要的一点是要在hive的服务安装节点开启hiveserver2
直接运行hiveserver2会一直停留在打印hive的操作日志的状态,可以改为后台运行
后台运行命令为:nohup hiveserver2 > /dev/null 2>&1 & 说明:后面的/dev/null 2>&1有说法是黑洞,具体忘记了,年纪大了容易忘,,有兴趣的童鞋可以百度一下
nohup后台运行的命令怎么关掉呢?当然你也可以百度;一个方法为:jobs -l 可以看到运行的进程号,kill -9 杀之~
3,把hadoop的安装文件夹和hive的安装文件夹copy到要配置hive客户端的这个linux上面,我测试的版本为hadoop-2.7.6,apache-hive-1.2.2-bin,并配置环境变量/etc/profile,记得source一下哦
注意:不配置HADOOP_HOME,运行beeline会提示缺少HADOOP_HOME参数,你可以理解为需要连接集群的地址,如master:9000的相关配置是在hdfs-site.xml中
hive是需要这些信息连接集群环境的,毕竟hive是在操作hdfs上的文件
4,配置命令;经过上面那三个步骤,其实你已经可以使用beeline -u jdbc:hive2://192.168.1.89:10000 -n root --color=true --silent=false 来远程登录hive了
但是看着这一长串的命令,懒癌犯了。。。配置一个简单点的命令吧。想到的一个办法就是alias自定义命令,并把它配置到环境变量中,在~/.bashrc中添加
alias beeline="/opt/softWare/hive/apache-hive-1.2.2-bin/bin/beeline -u jdbc:hive2://ip:10000 -n root --color=true --silent=false"
source ~/.bashrc即可,需要注意的是beeline使用了绝对路径,因为我新生成的命令就叫beeline,为避免冲突,写了绝对路径,当然你可以改成其他命令
5,最后测试一下,敲出beeline命令即可进入到远程hive的命令行