设为首页 收藏本站
查看: 2650|回复: 0

[经验分享] 基于hadoop的hive derby嵌入模式安装

[复制链接]

尚未签到

发表于 2018-11-1 06:13:28 | 显示全部楼层 |阅读模式
基于hadoop集群的hive安装步骤
----嵌入式derby 模式
安装环境hadoop已经安装结束,mysql已经安装结束。
hive是安装在集群中的主节点上(hostname:node0)
hadoop 版本号:hadoop-0.23.5
hive版本号:hive-0.8.1
derby版本号:db-derby-10.9.1.0
mysql版本号:mysql-5.1.47(linux redhat 安装时已经安装)
首先是hive的嵌入式模式的安装,
在hive嵌入式安装时默认的数据库是derby,
嵌入式模式的安装无法用于实际的工作,
即这种模式的运行环境无法支持双向同步或是集群工作。
但是可以用来对hive安装是否正确起到测试和调配作用,
待到嵌入模式下hive正确运行后,
可以在此基础上对配置文件做简单的调配就可以进行mysql安装配置了。
可以先创建好目录:
mkdir -p /usr/hive   用来存放hive压缩包解压后的相应文件
mkdir -p /usr/derby 用来存放derby解压后的相应文件
--------------------------------------------------------
将hive的压缩包从主机copy到虚拟机上的
/usr 目录下,
然后对压缩包进行解压,命令是:
tar -xzf  hive-0.8.1-bin.tar
解压后会在/usr目录下生成一个
hive-0.8.1-bin的文件夹,
切换到该文件夹下
cd  /usr/hive-0.8.1-bin
ls
会看到conf lib bin 等相应的文件夹,
cp * -r /usr/hive   将所有的文件都拷贝到/usr/hive下
cd /usr     切换目录到/usr路径下
rm -r -f  hive-0.8.1-bin    这步可选,将原先的解压后的文件删除
-------------------------------------------------------------------
将derby的压缩包从主机copy到虚拟机上的
/usr 目录下,
解压该压缩文件:
tar -xzf db-derby-10.9.1.0-bin.tar
解压后生成文件夹: db-derby-10.9.1.0-bin
将该文件夹下的所有内容转入到/usr/derby 文件夹下
cd  /db-derby-10.9.1.0-bin
ls  执行这个命令之后会看见  bin lib  test 等一些文件夹
cp * -r  /usr/derby
cd   /usr
rm -f -r db-derby-10.9.1.0  将文件夹递归强制删除。
------------------------------------------------------------
这样derby被安装在/usr/derby 下
而hive则被安装在/usr/hive下,
安装路径的设置很重要,因为这关系到配置文件的改写。
-------------------------------------------------------------
vi /etc/profile
在末尾加上:
#set for hive
export HIVE_HOME=/usr/hive
export HIVE_CONF_DIR=/usr/hive/conf
//在系统中指出hive的配置文件所在
export PATH=$PATH:$HIVE_HOME/bin
//这个可以实现,只要输入hive,hive service就会自动响应,
//而不用必须输入hive所在的绝对路径。
export HIVE_LIB=$HIVE_HOME/lib
由于hadoop已经安装上了,所以关于hadoop路径的export不再说明。
当然为了让profile文件立即生效:
source /etc/profile
这样既可生效。
-------------------------------------
接下来是对hive配置文件的调配
首先应该切换到目录:
cd /usr/hive/conf/
ls
会看见有:hive-env.sh.template这个文件,
(.template文件是模板文件,
让用户参照其中的格式进行自定义的修改和优化)
将其cp并命名为:hive-env.sh 命令如下:
cp hive-env.sh.template  hive-env.sh
vi hive-env.sh
将export HADOOP_HEAPSIZE=1024前面的‘#’去掉
当然可以根据自己的环境对这个默认的1024进行优化
将export HADOOP_HOME前面的‘#’号去掉,
并让它指向您所安装hadoop的目录
(就是切换到这个目录下有hadoop的conf,lib,bin 等文件夹的目录),
(mine:HADOOP_HOME=/home/hadoop/hadoop)
其实在安装hive时需要指定HADOOP_HOME的原理基本上与
在安装Hadoop时需要指定JAVA_HOME的原理是相类似的。
Hadoop需要java作支撑,而hive需要hadoop作为支撑。
将export HIVE_CONF_DIR=/usr/hive/conf,并且把‘#’号去掉
将export HIVE_AUX_JARS_PATH=/usr/hive/lib
esc(键)
:wq
source /hive-env.sh(生效文件)
----------------------------------------------------------finish hive-env.sh
在修改之前,要相应的创建目录,以便与配置文件中的
路径相对应,否则在运行hive时会报错的。
mkdir -p /usr/hive/warehouse
mkdir -p /usr/hive/tmp
mkdir -p /usr/hive/log
cp  hive-default.xml.template   hive-site.xml
vi hive-site.xml
这个文件中的配置项很多,篇幅也很长,所以要有耐心看。
当然也可以使用搜索匹配字符串的方式进行查找:
键入‘/hive.metastore.warehouse.dir’(回车)
就会锁定到所需要的字符串上。
其中有三处需要修改:

hive.metastore.warehouse.dir
/usr/hive/warehouse

这个是数据目录

hive.exec.scratdir
/usr/hive/tmp

这个是临时文件目录
//这个在笔者的文件中没有可以自己添加

hive.querylog.location
/usr/hive/log

这个是用于存放hive相关日志的目录
其余的不用修改。
-------------------------------------------finish hive-site.xml
cp hive-log4j.properties.template  hive-log4j.proprties
vi hive-log4j.properties
hive.log.dir=
这个是当hive运行时,相应的日志文档存储到什么地方
(mine:hive.log.dir=/usr/hive/log/${user.name})
hive.log.file=hive.log
这个是hive日志文件的名字是什么
默认的就可以,只要您能认出就好,
只有一个比较重要的需要修改一下否则会报错。
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
如果没有修改的话会出现:
WARNING: org.apache.hadoop.metrics.EventCounter is deprecated.
please use
org.apache.hadoop.log.metrics.EventCounter
in all the  log4j.properties files.
(只要按照警告提示修改即可)。
-------------------------------------------------------finish all
接着只要输入命令:hive
就可以显示出:
hive>
输入命令show tables;(不要忘记加上分号,否则不会执行)
输入命令exit;(不要忘记加上分号)
退出hive
--------------------------------------------------------finish install
  ------------------------------------------------
  ------------------------------------------------
接下来要配置的是mysql模式下的hive;
此种模式下是将hive的metadata存储在Mysql中,
Mysql的运行环境支撑双向同步或是集群工作环境,
这样的话,至少两台数据库服务器上会备份hive的元数据。
既然在derby模式下的hive已经能够成功运行,
这就说明在系统中关于hive配置文件中的参数是正确的。
接下来是关于mysql的安装,
以及hive的配置文件关于mysql而进行一些参数的调配。
----------------------------------------------------------------------
可以在系统中输入命令:
service mysqld restart
mysql
来判断计算机中是否安装有mysql。
如果系统中安有mysql,会出现提示:
mysql>    (进入到mysql的命令模式)
------------------------------------------
如果系统中没有安装可以从mysql官方网站下载。
http://www.mysql.com/downloads/
----------------------------------------------
继续配置hive-site.xml文件:

hive.metastore.warehouse.dir
hdfs://node0:9000/usr/hive/warehouse

其中node0指的是笔者的NameNode的hostname;

hive.exec.scratchdir
hdfs://node0:9000/usr/hive/warehouse

//这个没有变化

hive.querylog.location
/usr/hive/log


javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?createDatabaseIfNoExist=true

javax.jdo.option.ConnectionURL
这个参数使用来设置元数据连接字串
----------------------------------------------------

javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver

javax.jdo.option.ConnectionDriverName
关于在hive中用java来开发与mysql进行交互时,
需要用到一个关于mysql的connector,
这个可以将java语言描述的对database进行的操作,
转化为mysql可以理解的语句。
connector是一个用java语言描述的jar文件。
而这个connector可在官方网站上下载得到。
笔者附件中有一个,如果需要可以自行下载。
经证实即便connector与mysql的版本号不一致,
也可以实现相应的功能。
connector是要copy到/usr/hive/lib目录下面的。
cp  mysql-connector-java-5.1.1.18-bin  /usr/hive/lib
-----------------------------------------------------------

javax.jdo.option.ConnectorUserName
hive

这个javax.jdo.option.ConnectionUserName
是用来设置hive存放的元数据的数据库(这里是mysql数据库)
的用户名称的。
而这个‘hive‘可以根据用户自己的需要来自行设置
---------------------------------------------------------------
javax.jdo.option.ConnectionPassword
hive

这个javax.jdo.option.ConnetionPassword是用来设置,
用户登录数据库的时候需要输入的密码的。
而这个‘hive’同样可以根据用户自己的需要来进行设置。
---------------------------------------------------------------

datanucleus.fixedDatastore
false
Disable updates to the schema
once it has been created.

//在笔者的hive-site.xml文件中并没有关于这个的设置项
//后添加后会遇到运行错误,如果您对此感兴趣可以参阅网站上的说明
//更进一步的研究可以参考:
https://issues.apache.org/jira/browse/HIVE-1841----------------------------------------------------------------------
在hive配置好以后,若想让其运行起来,
应该在mysql库中创建用户hive,并且密码也要设置为hive;
这个用户名与密码是和前面的配置文件的
javax.jdo.option.ConnectorUserName
javax.jdo.option.ConnectionPassword
是相对应的。
如何在mysql中创建用户?并赋予其权限?
service mysqld start
mysql
mysql> CREATE USER 'hvie'@'node0'>
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'node0' WITH GRANT OPTION;
mysql> flush privileges;
执行上述语句后就可以用hive用户登录来检验用户是否添加成功
mysql -uhive -hnode0 -p  (enter)
password:****(hive)
node0是笔者主机的hostname,当然您也可以写localhost
其中-u参数后接创建的用户名称,而-h后接的是创建mysql用户时主机的名称(@之后的)
---------------------------------------------------------------------------------------
对于hive登录后出现的错误:
hive>show tables;
FAILED :Error in metadata : java.lang.IllegalArgumentException
:URL: does not have a scheme
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
hive>show tables;
FAILED:Error in metadata:javax.jdo.JDOFatalDataStoreException:Unknow database 'hive'
NestedThrowables;
com.mysql.jdbc.execeptions.jdbc4.MySQLSyntaxErrorException:Unknown database 'hive'
按照错误提示:必须要为hive的metadata存储创建相应的database。
而创建database应该使用的是mysql 的hive用户来创建的database
以hive用户创建hive数据库的命令:
mysql -uhive -hnode0 -p(enter)
password:****(hive)
mysql>show databases;
......
mysql>create database hive;
.......
mysql>show databases;
.......
mysql>exit;
输入hive(enter)
hive>show databases;
OK;
就可以看见相应的显示了。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629071-1-1.html 上篇帖子: Hadoop运维记录系列(四) 下篇帖子: Hadoop在银行业的应用实战一 概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表