hadoop2.7完全分布式安装请参考:点击阅读,继任该篇博客之后,诞生了下面的这一篇博客
基本环境:
Hadoop 2.7
Java 1.7.0_51
CentOS 6.5
预安装:
Hive 1.2.1 下载地址
Zookeeper 3.4.8 下载地址
Hbase 1.2.2 下载地址
Hive的伪分布安装请参考 :点击阅读
Hive基于Mysql的伪分布部署轻参考:点击阅读
Hive的完全分布式安装的前提安装Mysql数据库,CentOS 6.5下安装Mysql请参考之前的一篇博客:点击阅读
Hive的安装其实是有两部分组成,分别是Server端和Client端,所谓的服务端就是Hive管理Meta的那个Hive,服务端可以安装在任意节点上,可以是NameNode,也可以是DataNode,至于那个节点做Hive的服务端,由自己决定,不过在Hadoop的HA环境里,我想在两个NameNode里都装成Hive的Server,并且hive.metastore.warehouse.dir配置成hdfs://****,这样其他节点安装的Hive就都是客户端了,并且hive.metastore.uris值可以指向这两个NameNode的Ip
hive.metastore.uris:指定hive元数据访问路径,如果为空则是本地模式,否则为远程模式
hive.metastore.warehouse.dir:(HDFS上的)数据目录,可以在3个地方保存
hive.exec.scratchdir:(HDFS上的)临时文件目录
hive.metastore.warehouse.dir默认值是/user/hive/warehouse
hive.exec.scratchdir默认值是/tmp/hive-${user.name}
[master@master1 hive]$ mysql -uroot -p
Enter password:
......此处省略部分日志......
mysql> create user 'hive' identified by 'hive';
Query OK, 0 rows affected (0.05 sec)
mysql> grant all privileges on *.* to 'hive' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
此时报错如下:ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)
解决办法:重新以root用户登录mysql,删除msyql数据库下user表中为空的记录
mysql> delete from user where user is null;
Query OK, 0 rows affected (0.00 sec)
mysql> delete from user where user='';
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
以hive用户登录,创建hive数据库
[master@master1 opt]$ mysql -uhive -p
Enter password:
....省略....
mysql> create database hive;
Query OK, 1 row affected (0.00 sec)
mysql> use hive;
Database changed
mysql> show tables;
Empty set (0.00 sec)
我这里使用的是/opt/ :sudo tar -zxvf /home/master/桌面/apache-hive-1.2.1-bin.tar.gz -C /opt/
重命名为hive:sudo mv apache-hive-1.2.1-bin hive
sudo cp /home/master/桌面/mysql-connector-java-5.1.39-bin.jar /opt/hive/lib/
sudo vim /etc/profile
#hive
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin
[master@master1 conf]$ sudo cp hive-env.sh.template hive-env.sh
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
hive
username to use against metastore database
javax.jdo.option.ConnectionPassword
hive
password to use against metastore database
[master@master1 hadoop]$ sbin/start-all.sh
启动hiev报错:
Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)
愿意:没有初始化元数据
解决办法:执行 bin/schematool -initSchema -dbType mysql
再次启动hive:bin/hive,报错:
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
原因:路径不对
解决办法:将含有system:java.io.tmpdir的配置项改为/opt/hive/iotmp (前提是你已经建立了这样一个文件夹)
再次启动hive报错:
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: 权限不够
解决办法:[master@master1 hive]$ sudo chmod 777 iotmp/
再次启动: yes!!!
hive1.2.1 lib目录下不带hwi文件,所以需要我们自己打包,下载apache-hive-1.2.1-src.bin.tar 解压,进入hwi 目录执行:
jar cvfM0 hive-hwi-1.2.1.war -C web/ .
并将打好的war包cp到hive/lib目录下,此时仍然不能访问 hive的web界面,出现错误:
NO JSP Support for /hwi, did not find org.apache.jasper.servlet.JspServlet
解决办法:下载以下jar包,放到hive/lib目录下(点击下载)
commons-el-1.0.jar
jasper-compiler.jar
jasper-runtime.jar
toos.jar(java/lib 目录下的一个包)
再次启动 OK!
http://www.tuicool.com/articles/Bbqaea
参考网上的文章进行配置发现我的hiveserver2一直启动不了,每当执行bin/hive --service hiveserver2 时总是卡在那里不动,折腾了大半天也一直没有找到错误,就先这样吧,各位博友大家如果有什么好的意见欢迎留言
ZK官网建议安装在至少3台机器上,故这里将ZK分别安装三台机器组成的集群中
sudo tar -zxvf /home/master/桌面/zookeeper-3.4.8.tar.gz -C /opt/
重命名:mv zookeeper-3.4.8/ zookeeper
在dataDir指定的数据目录(/opt/zookeeper/data)下,创建文件myid,文件内容为一个正整数值,用来唯一标识当前机器,因此不同机器的数值不能相同,建议从1开始递增标识,以方便记忆和管理。
IP 标识数值
192.168.48.130 1
192.168.48.131 2
192.168.48.132 3
tickTime=2000
每台机器上执行:[master@master1 zookeeper]$ sudo bin/zkServer.sh start
我们可以使用 sudo bin/zkServer.sh status 查看状态
sudo bin/zkServer.sh stop 停止服务
[master@master1 zookeeper]$ sudo bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
解决办法:
查看 zookeeper.out 可知是权限问题
在每台机器下给 data ,data/zookeeper_server.pid,zookeeper.out 777 权限即可
由于zkServer必须三台都启动后才选择leader和follower,故刚开始会出现都是Error contacting service. It is probably not running.的情况
基于hadoop 2.7 ,ZK 3.4.8部署
tar -zxvf hbase-1.2.2-bin.tar.gz -C /opt/hbase
mv /opt/hbase-1.2.2 /opt/hbase # 重命名
sudo vim /etc/profile
加入:
#hbase
export HBASE_HOME=/opt/hbase
export PATH=$HBASE_HOME/bin:$PATH
export JAVA_HOME=/opt/java
export HBASE_CLASSPATH=/opt/hbase/conf
# 此配置信息,设置由zk集群管理,故为false
export HBASE_MANAGES_ZK=false
export HBASE_HOME=/opt/hbase
export HADOOP_HOME=/oopt/hadoop
#Hbase日志目录
export HBASE_LOG_DIR=/opt/hbase/logs
hbase.rootdir
hdfs://192.168.48.130:9000/hbase
hbase.cluster.distributed
true
hbase.master
master1:60000
hbase.zookeeper.property.dataDir
/opt/zookeeper
hbase.zookeeper.quorum
master1,slave1,slave2
hbase.zookeeper.property.clientPort
2181
清空该文件,加入集群的节点,例如我这里是
slave1
slave2
sudo scp /opt/hbase slave1:/opt/hbase
sudo scp /opt/hbase slave1:/opt/hbase
启动之前得保证ZK和hadoop已经启动
[master@master1 hbase]$ bin/start-hbase.sh启动时会报出权限不足的问题,我这里的解决办法是给每个节点的hbase目录赋予777的权限,但这并不是安全的,如果大家有什么好的办法,可以留下
最终jps效果如下:
貌似从1.0版本以后端口改为16010端口了,所以web访问为:http://192.168.48.130:16010/
scp文件: scp name slave1:/path
scp文件夹:scp -r name slave1:/path
彻底弄清Hive安装过程中的几个疑问点
hbase0.96与hive0.12整合高可靠文档及问题总结
这里并不需要将Hive拷贝到各个节点,是因为,这里Hive的底层数据存储为HDFS,而HDFS本身就是分布式的,所以不需要,当然这里也可以把Hive安装到slave节点上,但是出于方便和使用习惯,一般都部署在namenode上
大数据全新视频教程,博主亲自整理,点击查看