Hive的用处,就是把hdfs里的文件建立映射转化成数据库的表 但hive里的sql语句都是转化成了mapruduce来对hdfs里的数据进行处理 ,并不是真正的在数据库里进行了操作。 而那些表的定义则是储存在了mysql数据库中,他只是记录相应表的定义 所以你的集群中要有一台机器装了mysql 装hive,装到哪都行 ![](https://i-blog.csdnimg.cn/blog_migrate/bb1bb6ccb6ce91c26d0398dfb15e6050.png) 然后解压tar –zxvf xxxxx –C apps 然后进入到这个目录里下的conf里 创建hive-site.xml文件 ![](https://i-blog.csdnimg.cn/blog_migrate/36c0a53d0e516c2f52d28ec336d328f0.png) 告诉他mysql在哪,连接驱动是啥,用户名和密码 然后进入lib目录下,把jdbc jar 包放到该目录下 然后是启动hive 你的hadoop和hive要配置的有环境变量 echo $PATH //可以查看配置的环境变量 echo $HADOOP-HOME //可以查看具体的哪一个 然后最好把hadoop和yarn都启动起来 然后再安装目录里bin/hive就可以启动了 ![](https://i-blog.csdnimg.cn/blog_migrate/b4922924ce6ef70fc81443bab16c7cca.png) 默认的是default数据库 创建数据库和表都会在真正的hdfs里面创建目录 ![](https://i-blog.csdnimg.cn/blog_migrate/84ac8118838200fec761d5dcbcb6bc90.png) 然后如果你要是想往表里面导数据,你需要把相应的文件用 ^A 来分割放到hdfs里的相应目录下 ![](https://i-blog.csdnimg.cn/blog_migrate/04afdfc7af4c21dd8d35a6138acfda2a.png) 然后把这个文件上传到hdfs里面 hadoop fs -put stu.info /user/hive/warehouse/t_big24/ 在hive交互页面中,显示当前库 设置一些基本参数,让hive使用起来更便捷,比如: 1、让提示符显示当前库: hive>set hive.cli.print.current.db=true; 2、显示查询结果时显示字段名称: hive>set hive.cli.print.header=true; 但是这样设置只对当前会话有效,重启hive会话后就失效,解决办法: 在linux的当前用户目录中,编辑一个.hiverc文件,将参数写入其中: vi .hiverc
set hive.cli.print.header=true; set hive.cli.print.current.db=true; |
配置hive环境变量 比如我hive是解压在 /root/apps/hive-1.2.1 Vi /etc/profile 然后在最后加上 Export HIVE_HOME=/root/apps/hive-1.2.1 Export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin 还可以把hive当成一个服务,使用客户端来访问这个服务 服务端口号10000 启动hive服务 bin/hiveserver2 然后可以在linux监听端口号netstat -nltp 启动成功后,可以在别的节点上用beeline去连接 启动服务 bin/beeline 然后要连接他 !connect jdbc:hive2://hdp-01:10000 然后输入账户root 没有密码 课外知识 标准输出重定向。Linux里1就是标准输出 ./linux脚本文件 1>/要输入的文件名 2>/错误时要定向到的文件名 & 这样就不会再终端打印了 /dev/null 是一个“黑洞”什么东西都会删除 上述启动,会将这个服务启动在前台,如果要启动在后台,则 |