当前位置:   article > 正文

hadoop伪分布式安装部署HIVE

hadoop 伪分布式 hive

应用场景

当我们按照hadoop伪分布式集群搭建博客搭建了hadoop以后,发现这是一个空的hadoop,只有YARN,MapReduce,HDFS,而这些实际上我们一般不会直接使用,而是需要另外部署Hadoop的其他组件,来辅助使用。比如我们把数据存储到了hdfs,都是文件格式,用起来肯定不方便,用HIVE把数据从HDFS映射成表结构,直接用sql语句即可操作数据。另外针对分布式数据计算算法MapReduce,需要直接写MapReduce程序,比较复杂,此时使用Hive,就可以通过写SQL语句,来实现MapReduce的功能实现。

操作步骤

1. 安装mysql

安装mysql,配置远程登录,具体参考mysql章节
并配置可以远程登录mysql

2. 下载hive2.1并解压配置环境变量

下载hive2.1

  1. 解压到opt目录下,更换目录为hive-2.1.1
  2. # tar zxvf apache-hive-2.1.1-bin.tar.gz
  3. # mv apache-hive-2.1.1-bin hive-2.1.1
  • 1
  • 2
  • 3

配制系统环境变量:

  1. # vim /etc/profile
  2. export HADOOP_HOME=/usr/local/hadoop-2.6.0
  3. export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
  4. export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
  5. export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
  6. export HIVE_HOME=/opt/hive-2.1.1
  7. export HIVE_CONF_DIR=${HIVE_HOME}/conf
  8. export JAVA_HOME=/opt/jdk1.7.0_79
  9. export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$PATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

保存后,使配制生效:
# source /etc/profile

3. 修改hive-env.sh文件

修改hive-env.sh文件,在文件底部增加以下环境变量:

  1. # cd /opt/hive-2.1.1/conf
  2. # cp hive-env.sh.template hive-env.sh
  3. # vim hive-env.sh
  4. export JAVA_HOME=/usr/java/jdk1.7.0_79
  5. export HIVE_HOME=/opt/hive-2.1.1
  6. export HIVE_CONF_DIR=/opt/hive-2.1.1/conf
  7. export HIVE_AUX_JARS_PATH=/opt/hive-2.1.1/lib
  8. export HADOOP_HOME=/opt/hadoop-2.6.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4. 修改hive-site.xml文件

4.1 修改hive-site.xml文件,并将所有的${system:java.io.tmpdir}替换为绝对路径:

  1. # cp hive-default.xml.template hive-site.xml
  2. # vim hive-site.xml
  3. 由于在该配置文件中有如下两个配置项注明了hive在HDFS中数据存储的目录,因此我们需要在HDFS上手动创建并赋权限,也就是需要在hdfs上创建/tmp/hive 和/user/hive/warehouse
  4. # hadoop fs -mkdir -p /user/hive/warehouse
  5. # hadoop fs -chmod -R 777 /user/hive/warehouse #递归赋予读写权限
  6. # hadoop fs -mkdir -p /tmp/hive/ #创建/tmp/hive/目录
  7. # hadoop fs -chmod -R 777 /tmp/hive #目录赋予读写权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. <property>
  2. <name>hive.exec.local.scratchdir</name>
  3. <value>${system:java.io.tmpdir}/${system:user.name}</value>
  4. <description>Local scratch space for Hive jobs</description>
  5. </property>
  6. <property>
  7. <name>hive.downloaded.resources.dir</name>
  8. <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
  9. <description>Temporary local directory for added resources in the remote file system.</description>
  10. </property>
  11. <property>
  12. <name>hive.querylog.location</name>
  13. <value>${system:java.io.tmpdir}/${system:user.name}</value>
  14. <description>Location of Hive run time structured log file</description>
  15. </property>
  16. <property>
  17. <name>hive.server2.logging.operation.log.location</name>
  18. <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>
  19. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  20. </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

替换后:

  1. <property>
  2. <name>hive.exec.local.scratchdir</name>
  3. <value>/opt/hive-2.1.1/tmp/</value>
  4. <description>Local scratch space for Hive jobs</description>
  5. </property>
  6. <property>
  7. <name>hive.downloaded.resources.dir</name>
  8. <value>/opt/hive-2.1.1/tmp/${hive.session.id}_resources</value>
  9. <description>Temporary local directory for added resources in the remote file system.</description>
  10. </property>
  11. <property>
  12. <name>hive.querylog.location</name>
  13. <value>/opt/hive-2.1.1/tmp/</value>
  14. <description>Location of Hive run time structured log file</description>
  15. </property>
  16. <property>
  17. <name>hive.server2.logging.operation.log.location</name>
  18. <value>/opt/hive-2.1.1/tmp/root/operation_logs</value>
  19. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  20. </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

4.2 修改hive-site.xml文件,修改文件中的元数据的连接,驱动,用户名,密码

hive-site.xml中相关元数据信息配制:
javax.jdo.option.ConnectionDriverName,将对应的value修改为MySQL驱动类路径;
javax.jdo.option.ConnectionURL,将对应的value修改为MySQL的地址;
javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名;
javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:

  1. <property>
  2. <name>javax.jdo.option.ConnectionDriverName</name>
  3. <value>com.mysql.jdbc.Driver</value>
  4. <description>Driver class name for a JDBC metastore</description>
  5. </property>
  6. <property>
  7. <name>javax.jdo.option.ConnectionURL</name>
  8. <value>jdbc:mysql://192.168.208.110:3306/hive?createDatabaseIfNotExist=true</value>
  9. <description>
  10. JDBC connect string for a JDBC metastore.
  11. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
  12. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
  13. </description>
  14. </property>
  15. <property>
  16. <name>javax.jdo.option.ConnectionUserName</name>
  17. <value>root</value>
  18. <description>Username to use against metastore database</description>
  19. </property>
  20. <property>
  21. <name>javax.jdo.option.ConnectionPassword</name>
  22. <value>11111</value>
  23. <description>password to use against metastore database</description>
  24. </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

将MySQL驱动包添加到Hive的lib目录下:mysql-connector-java-5.1.38-bin.jar

5. hive的启动及测试:

对hive元数据初始化(mysql中hive元信息初始化、建表等):

  1. # schematool -initSchema -dbType mysql
  2. # hive
  • 1
  • 2

6. 注意

注:如果要用beeline -u jdbc:hive2://ip:10000进行连接,需要修改hdfs的core-site.xml配置

  1. <property>
  2. <name>hadoop.proxyuser.root.hosts</name>
  3. <value>*</value>
  4. </property>
  5. <property>
  6. <name>hadoop.proxyuser.root.groups</name>
  7. <value>*</value>
  8. </property>
  9. # 备注:hadoop.proxyuser.XXX.hosts 与 hadoop.proxyuser.XXX.groups 中XXX为异常信息中User:* 中的用户名部分,这里用户名都是root,所以hdfs的core-site.xml中的标签名为hadoop.proxyuser.root.hosts与hadoop.proxyuser.root.groups
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/785790
推荐阅读
相关标签
  

闽ICP备14008679号