1. apache官网下载Hive的安装包 (hive2.0.0)
2. tar -zxvf hive安装包
3. 修改conf目录下的配置文件名字: mv hive-default.xml.template hive-site.xml
4. 安装mysql数据库。
CentOS6:
yum install mysqld
yum install mysql-server
service mysqld start
netstat -nplt | grep 3306 查看3306端口启动情况
CentOS7:
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum install mysql-server
service mysqld start
netstat -nap |grep 3306
【注意】
1. grep 'temporary password' /var/log/mysqld.log 查看MySQL5.7的root用户的初始密码,登陆进去之后必须先修改密码,否则不能进行任何操作!
2.MySQL5.7是有安全认证机制的,若要使用简单密码做下面的操作:
修改mysql配置参数
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
SET PASSWORD = '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
SHOW VARIABLES LIKE 'validate_password%';
修改简单密码
use mysql
SET PASSWORD = PASSWORD('123456');
flush privileges;
设置完后重启mysql服务器就可以了
5. 把mysql的驱动包放入hive的lib目录下
6. 授权远程访问
grant all on *.* to root@'%' identified by '123456';
所有的机器都可以通过以用户名是root密码是123456的身份登陆MySQL数据库
7. 修改hive-site.xml文件
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Master:3306/hive</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
【注意】 MySQL中的数据库需要提前创建
扩展:安装中出现的问题
(1)
Caused by: MetaException(message: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))
很显然这是因为作为metastore的数据库没有初始化,错误中已经告诉我们怎么解决,只要一条命令:
./schematool -initSchema -dbType mysql
(这里按照你自己用的数据库来初始化,可以是derby,我用的mysql)
(2)
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
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:472)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
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:205)
at org.apache.hadoop.fs.Path.<init>(Path.java:171)
at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:515)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:458)
... 8 more
Caused by: java.net.URISyntaxException: Relative path in absolute 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:202)
... 11 more
解决办法
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive/local</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
---------------------
作者:fhg12225
来源:CSDN
原文:https://blog.csdn.net/fhg12225/article/details/45817477
版权声明:本文为博主原创文章,转载请附上博文链接!