hive1.2.2+mysql5.6.41+hadoop2.6.1安装过程
一.安装MySQL
1.下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2.安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
3.安装MySQL
yum install mysql-server mysql
4.设置密码(刚安装后出事后的密码设置,我设置的密码是111111)
--启动服务
service mysqld start
--初始化账号
mysqladmin -uroot password '111111'
5.然后用密码登陆
mysql -uroot -p(你设置的密码)
--进来之后 1.第一查看用户表
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host,user,password from user;
+-------------+------+-------------------------------------------+
| host | user | password |
+-------------+------+-------------------------------------------+
| localhost | root | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
| masterh | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| masterh | | |
| % | root | |
| % | hive | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | hive | |
| mysqlserver | hive | |
+-------------+------+-------------------------------------------+
10 rows in set (0.00 sec)
--通过查看用户表,以上的用户。我的本地的IP对应的主机名称是masterh,我们可以发现这里并没有显示该账号的密码。所以会导致在后续的hive配置中会出现错误,对应的会在后面说。所以下一步我们就是修改密码
--2.修改本地IP所有对应账号的密码
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
--执行SQL语句,利用update语句以及内置password函数(会将密码加密)
mysql>update user set password=password('111111') where host='masterh' and user='root';
--在此处我们还可以做一个操作,允许远程客户端可以连接访问(我用的是navicat)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;
mysql>exit;
通过以上的方法,可以将本地IP对应的root账号的密码进行了设置。然后我们通过登录查看是否设置成功
首先重启mysql的服务:service mysqld stop
service mysqld start
mysql -h masterh -u root -p 111111
如果设置成功就可以正常登录(以上密码的修改也是我遇到,花了很长时间通过各种百度,实验得以解决)
二.安装hive
1.下载http://www.eu.apache.org/dist/hive/stable/apache-hive-1.2.2-bin.tar.gz 并进行解压
2.修改配置文件
在conf目录:
cp hive-default.xml.template hive-site.xml
生成hive-site.xml文件之后:
把
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://masterh:3306/hive?createDatabaseIfNotExist=true</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>111111</value>
<description>password to use against metastore database</description>
</property>
---------------------注意----------------------------------------
由于我本机配置hadoop的时候 本机名称(masterh)直接对应的时本机的IP地址。所以这里用了masterh
(容易入坑的地方)
追加到文件中
(总共需要修改4处内容)
然后,把${system:java.io.tmpdir}全部替换/hive
把${system:user.name}全部替换root(这里用到一个在vim打开的情况下查找词的过程 esc 然后 /{system:user.name})
3.修改环境变量
接下来,进入bin目录(/usr/local/src/apache-hive-1.2.2-bin/bin)
修改hive-config.sh
把一下内容追加进文件:
export JAVA_HOME=/usr/local/src/jdk1.7.0_45
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
最后:修改~/.bashrc
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
并且把$HIVE_HOME/bin追加到PATH环境变量中
这里修改成自己对应的路径
执行一下bash生效
4.下载mysql驱动:
https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
文件:mysql-connector-java-5.1.46.tar.gz
把解压出来的mysql-connector-java-5.1.46-bin.jar文件复制到/usr/local/src/apache-hive-1.2.2-bin/lib
至此我们所有的配置安装工作都做好了
三.我所遇到的启动过程中的问题
1.
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
解决方法:
将当前hive版本的$HIVE_HOME/lib目录下的jline-2.12.jar包拷贝到
$HADOOP_HOME/share/hadoop/yarn/lib目录下,
并将旧版本的Hive的Jline包从$HADOOP_HOME/etc/hadoop/yarn/lib目录下删除
2.
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
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)
解决方案: 1.检查mysql 服务是否打开,service mysqld start
2.问题是没有连接上mysql .利用在hive-site.xml 的主机名称,账号,密码登陆看是否能登入mysql
3.注意启动的时候打开hadoop服务
4.最后启动hive我们连接MySQL可以看到下图,说明成功了:
以上就是在启动阶段我所遇到一些问题以及我个人的配置流程(如果错误欢迎指正)