hadoop1.2.1集群安装hive1.2.0,用mysql作为元数据库

来源:互联网 发布:圆方设计软件 编辑:程序博客网 时间:2024/06/05 08:00
安装Hive,有条件的同学可考虑用mysql作为元数据库安装(有一定难度,可以获得老师极度赞赏),安装完成后做简单SQL操作测试。

安装环境:

  • hadoop1.2.1集群

安装MySQL:

  • 配置本地yum源,
vi /etc/yum.repos.d/dvd.repo
Redhat6.6添加如下内容:
  1. [dvd]
  2. name=install dvd
  3. baseurl=file:///media/RHEL-6.6\ Server.x86_64/Server
  4. enabled=1
  5. gpgcheck=0
复制代码


  • 运行:yum -y install mysql-server命令安装完成。

  • 验证安装命令:rpm -qa     mysql-server

  • 设置172.16.247.140为mySQL Server的IP地址。

  • 修改主机名
修改当前会话中主机名Hostname mysqlserver
修改配置文件中的主机名Vi /etc/sysconfig/network
关闭防火墙:service iptables stop


  • 启动mysqld,建立相应的mySQL账号并赋予足够权限。
  1. [root@localhost hadoop]# service mysqld start
  2. [root@localhost hadoop]# chkconfig mysqld on //加入开机启动
  3. mysql
  4. mysql> create user 'hive' identified by '123456';
  5. mysql> grant all privileges on *.* to 'hive'@'%' with grant option;
  6. mysql> flush privileges;
  7. mysql> grant all privileges on *.* to 'hive'@'localhost' with grant option;
  8. mysql> flush privileges;
  9. mysql> grant all privileges on *.* to 'hive'@'mysqlserver' with grant option;
  10. mysql> flush privileges;
  11. mysql> exit;
复制代码


用hive用户登录测试并创建hive数据库:
  1. [root@localhost hadoop]# mysql -h 172.16.247.140 -u hive -p
  2. mysql> create database hive;
  3. mysql> show databases;
  4. mysql> use hive
  5. mysql> show tables;
复制代码


  • 下载驱动包(mysql-connector-java-5.1.35.tar.gz):http://dev.mysql.com/downloads/connector/j/
  • appledeMacBook-Pro:softwares     apple$ tar -xvf mysql-connector-java-5.1.35.tar
  • appledeMacBook-Pro:mysql-connector-java-5.1.35     apple$ scp mysql-connector-java-5.1.35-bin.jar     hadoop@hadoop0:/home/hadoop/apache-hive-1.2.0-bin/lib/
  • 启动metastorehive --service     metastore &
  • 启动hiveserverhive --service hiveserver &
(错误排查命令:hive-hiveconf hive.root.logger=DEBUG,console)
  1. hive
  2. hive>create table a1(a string,b int);
  3. hive>show tables
复制代码
  1. [root@localhost hadoop]# mysql -h 172.16.247.140 -u hive -p
  2. mysql> show databases;
  3. mysql> use hive
  4. mysql> show tables;
  5. mysql>select * from TBLS;

  6. hive>drop tables

  7. mysql>flush privileges;
  8. mysql>show tables;
  9. mysql>select * from TBLS;
复制代码


二、安装Hive

  • 下载hive apache-hive-1.1.0-bin.tar.gz from http://hive.apache.org
  • 安装scp -r     ./apache-hive-1.2.0-bin hadoop@hadoop0:/home/hadoop/
  • 配置vi /etc/profile
  1. #set hive environment
  2. export HIVE_HOME=/home/hadoop/apache-hive-1.2.0-bin
  3. export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
  4. export PATH=$HIVE_HOME/bin:$PATH
  5. export HIVE_CONF_DIR=$HIVE_HOME/conf
复制代码

备注:最后要使用命令:source /etc/profile  使环境变量立即生效。
2.修改$HIVE_HOME/bin的hive-config.sh,增加以下三行
  1. export HIVE_HOME=/home/hadoop/apache-hive-1.2.0-bin
  2. export JAVA_HOME=/home/hadoop/jdk1.7.0_79
  3. export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
复制代码



  • 创建hive-env.shhive-site.xml文件
  1. [root@hadoop0 conf]# pwd
  2. /home/hadoop/apache-hive-1.2.0-bin/conf
  3. [root@hadoop0 conf]# cp hive-env.sh.template hive-env.sh
  4. # HADOOP_HOME=${bin}/../../hadoop
  5. HADOOP_HOME=/home/hadoop/hadoop-1.2.1
  6. # Hive Configuration Directory can be controlled by:
  7. export HIVE_CONF_DIR=/home/hadoop/apache-hive-1.2.0-bin/conf
复制代码


[root@hadoop0 conf]# cp hive-default.xml.template hive-site.xml
cp hive-default.xml.templatehive-site.xml添加并修改里面的配置参数
  1. <property>
  2. <name>hive.metastore.local</name>
  3. <value>false</value>
  4. </property>
  5. <property>
  6. <name>javax.jdo.option.ConnectionURL</name>
  7. <value>jdbc:mysql://172.16.247.140:3306/hive?createDatabaseIfNotExist=true</value>
  8. </property>
  9. <property>
  10. <name>javax.jdo.option.ConnectionDriverName</name>
  11. <value>com.mysql.jdbc.Driver</value>
  12. </property>
  13. <property>
  14. <name>javax.jdo.option.ConnectionUserName</name>
  15. <value>hive</value>
  16. </property>
  17. <property>
  18. <name>javax.jdo.option.ConnectionPassword</name>
  19. <value>123456</value>
  20. </property>
  21. <property>
  22. <name>hive.metastore.uris</name>
  23. <value>thrift://172.16.247.140:9083</value>
  24. </property>
复制代码

设置参考:http://blog.csdn.net/reesun/article/details/8556078
[root@hadoop0 conf]# cp hive-default.xml.template hive-default.xml


  • 修改hive-env.sh文件
  1. HADOOP_HOME=/home/hadoop/hadoop-1.2.1
  2. export HIVE_CONF_DIR=/home/hadoop/apache-hive-1.2.0-bin/conf
复制代码


  • 创建文件夹:
  1. [root@hadoop0 bin]# hadoop fs -mkdir /tmp/hive
  2. [root@hadoop0 bin]# hadoop fs -chmod 733 /tmp/hive
  3. [root@hadoop0 bin]# hadoop fs -mkdir /user/hive
  4. [root@hadoop0 bin]# hadoop fs -chmod 733 /user/hive
复制代码


  • 先启动hadoop,mysql,再启动hive

  • 错误
[root@hadoop0 bin]# hive
Exception in thread "main" java.lang.NoClassDefFoundErrorrg/apache/hadoop/hive/ql/CommandNeedRetryException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
Caused by: java.lang.ClassNotFoundExceptionrg.apache.hadoop.hive.ql.CommandNeedRetryException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more
解决办法如下:
但是有一种解决办法,我也是用了这个办法启动的。
要修改master节点的hadoop的conf文件夹里的hadoop-env.sh文件,没有修改之前的是
export HADOOP_CLASSPATH=/home/hadoop/hadoop-1.2.1/myclass
修改之后为
exportHADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin:/home/hadoop/hadoop-1.2.1/myclass
改成如下也可以:
exportHADOOP_CLASSPATH=$CLASSPATH:/home/hadoop/hadoop-1.2.1/myclass


  • 解决${system:java.io.tmpdir}/${system:user.name}引起的错误:
[root@hadoop0 bin]# hive
15/05/30 08:55:39 WARN conf.HiveConf: HiveConf of namehive.metastore.local does not exist

Logging initialized using configuration injar:file:/home/hadoop/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties
Exception in thread "main"java.lang.RuntimeException: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:519)
atorg.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
atorg.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.fs.Path.initialize(Path.java:148)
at org.apache.hadoop.fs.Path.<init>(Path.java:126)
atorg.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:560)
atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:505)
... 7 more
Caused by: java.net.URISyntaxException: Relative path inabsolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1804)
at java.net.URI.<init>(URI.java:752)
at org.apache.hadoop.fs.Path.initialize(Path.java:145)
... 10 more
解决办法如下:
1.查看hive-site.xml配置,会看到配置值含有"system:java.io.tmpdir"的配置项,添加属性:
  1. <property>
  2.     <name>system:java.io.tmpdir</name>
  3.     <value>/home/hadoop/apache-hive-1.2.0-bin/iotmp</value>
  4.   </property>
  5. <property>
  6.     <name>system:user.name</name>
  7.     <value>hive</value>
  8.   </property>
复制代码

也可以参考:http://www.netfoucs.com/article/fhg12225/105246.html


  • 新建文件夹/home/hadoop/apache-hive-1.2.0-bin/iotmp
                         chmod 733 iotmp
启动hive,成功!
  1. [root@hadoop0 bin]# hive
  2. 15/05/30 09:10:09 WARN conf.HiveConf: HiveConf of name hive.metastore.local does not exist

  3. Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties
  4. hive>
复制代码




  • 测试,运行hive
hive
hive>create table a1(a string,b int);
hive>show tables
  1. [root@localhost hadoop]# mysql -h 172.16.247.140 -u hive -p
  2. mysql> show databases;
  3. mysql> use hive
  4. mysql> show tables;
  5. mysql>select * from TBLS;
  6. mysql> show databases
  7.     -> ;
  8. +--------------------+
  9. | Database           |
  10. +--------------------+
  11. | information_schema |
  12. | hive               |
  13. | mysql              |
  14. | test               |
  15. +--------------------+
  16. 4 rows in set (0.00 sec)

  17. mysql> show databases;
  18. +--------------------+
  19. | Database           |
  20. +--------------------+
  21. | information_schema |
  22. | hive               |
  23. | mysql              |
  24. | test               |
  25. +--------------------+
  26. 4 rows in set (0.00 sec)

  27. mysql> use hive;
  28. Reading table information for completion of table and column names
  29. You can turn off this feature to get a quicker startup with -A

  30. Database changed
  31. mysql> show tables;
  32. +---------------------------+
  33. | Tables_in_hive            |
  34. +---------------------------+
  35. | BUCKETING_COLS            |
  36. | CDS                       |
  37. | COLUMNS_V2                |
  38. | DATABASE_PARAMS           |
  39. | DBS                       |
  40. | FUNCS                     |
  41. | FUNC_RU                   |
  42. | GLOBAL_PRIVS              |
  43. | PARTITIONS                |
  44. | PARTITION_KEYS            |
  45. | PARTITION_KEY_VALS        |
  46. | PARTITION_PARAMS          |
  47. | PART_COL_STATS            |
  48. | ROLES                     |
  49. | SDS                       |
  50. | SD_PARAMS                 |
  51. | SEQUENCE_TABLE            |
  52. | SERDES                    |
  53. | SERDE_PARAMS              |
  54. | SKEWED_COL_NAMES          |
  55. | SKEWED_COL_VALUE_LOC_MAP  |
  56. | SKEWED_STRING_LIST        |
  57. | SKEWED_STRING_LIST_VALUES |
  58. | SKEWED_VALUES             |
  59. | SORT_COLS                 |
  60. | TABLE_PARAMS              |
  61. | TAB_COL_STATS             |
  62. | TBLS                      |
  63. | VERSION                   |
  64. +---------------------------+
  65. 29 rows in set (0.00 sec)
复制代码

Hive端删除表a1:
  1. hive>drop table a1;
复制代码

服务器端刷新查看:
  1. mysql>flush privileges;
  2. mysql>show tables;
  3. mysql>select * from TBLS;
复制代码

问题及其解决相关帖子:http://f.dataguru.cn/thread-501728-1-1.html
http://www.dataguru.cn/thread-525044-1-1.html

转载: http://f.dataguru.cn/thread-525071-1-2.html
0 0
原创粉丝点击