文章目录
- Hive安装
- Hive元数据库Mysql的安装
- hive的安装
- Hive安装过程中的异常以及解决方法
- Sqoop的安装
Hive安装
Hive元数据库Mysql的安装
(这儿展示Ubuntu系统安装Mysql)
1. sudo apt-get install mysql-server
2. apt-get install mysql-client
3. sudo apt-get install libmysqlclient-dev
注意!!!---安装过程中会提示设置密码什么的,设置了千万别忘了(改密码很麻烦)
4.sudo netstat -tap | grep mysql #检查mysql安装成功与否(看到有mysql 的socket处于 listen 状态则表示安装成功)
5. mysql -u root -p # -u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql
6. (很重要)grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; # 显示ok
授权命令解释: grant:授权 all privileges:增删改查的权利 on *.*表示任意库的任意表 to ‘root’表示给哪个用户 @’%’:@任意 IDENTIFIED BY:鉴定 ‘123456’:密码
7. flush privileges; 显示ok #使授权立即生效,之后可以从Windows连接mysql试试 用Navicat for MySQL或者SQLyog
8. (很重要) 修改mysql默认编码:mysql默认的是latin1 我们需要设置成uft-8(原因不用我说吧)
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf
##添加如下内容:
[client] ##如果没有[client]段,就自己添加上去
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
##注释掉下面的内容
bind-address=127.0.0.1 ## 注释掉 方便windows上用sqlyog或者Navicat for MySQL等数据库连接工具连接mysql
修改之后重启:service mysql restart
9. (很重要)create database hive charater set latin1; #创建hive的数据库 指定为latin1编码(特别重要,hive源数据库必须是latin1),用于保存hive的元数据
hive的安装
- hive安装包的下载:请看我另一篇文章中给定地址:
- 下载好后开始进行安装步骤
1. 进入hive安装包目录下解压 tar -xvf apache-hive-2.1.1-bin
2. 将解压后的hive移动到hadoop同级目录下 mv apache-hive-2.1.1-bin /opt/hadoop/hive-2.1.1
3. 删除安装包 rm apache-hive-2.1.1-bin.tar.gz
4. 查看目录结构 ls
5. 修改配置文件,添加hive的全局环境变量 vim /etc/profile
# set java environment
export JAVA_HOME=/opt/java_env/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# set hadoop environment
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
# set hive envrionment
export HIVE_HOME=/opt/hadoop/hive-2.1.1
export PATH=$JAVA_HOME/bin:$PATH:$HIVE_HOME/bin
#注意路径,根据自己的安装路径来
6. source /etc/profile #使环境变量生效
7. hive --version#查看hive版本 显示成功
8. cd /opt/hadoop/hive-2.1.1/conf
把初始化的文件 复制一份出来 并且改名
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
9. 在$HIVE_HOME目录下创建tmp目录
10. 在hdfs上创建相关目录
hadoop fs -mkdir /user/hive/tmp #hive临时目录
hadoop fs -mkdir -p /user/hive/warehouse #warehouse默认目录
hadoop fs -mkdir -p /user/hive/log #hive的日志
#权限设置
hadoop fs -chmod -R 777 /user/hive/warehouse
hadoop fs -chmod -R 777 /user/hive/tmp
hadoop fs -chmod -R 777 /user/hive/log
11. vim hive-site.xml
## MySQL 数据库连接信息
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.50.131:3306/hive?CreateDatabaseIfNotExist=true?useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
## 上述的hdfs上的目录
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
</property>
## 忽略第一次启动hive的版本检查(之前没启动过他找不到version号就会报错)
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
14. 上传mysql驱动包到/$HIVE_HOME/lib mysql各版本的驱动包(和jdk版本对应哦)---http://central.maven.org/maven2/mysql/mysql-connector-java/
15. 使用hive安装目录下bin目录中的schematool命令初始化元数据库 schematool -dbType mysql -initSchema(一定要初始化hive的元数据库哦,非常重要)
16. 最后启动hive,输入命令 hive
Hive安装过程中的异常以及解决方法
- 错误1
1. 报错:Missing Hive Execution Jar: /opt/hadoop/hive-2.1.1/conf/lib/hive-exec-*.jar
2. 原因:hive环境变量设置的问题 hive目录下conf和lib是在同意目录下
3. 处理方法:vim /etc/profile
修改前:
export HIVE_HOME=$PWD/hive
export PATH=$PATH:$HIVE_HOME/bin
修改后:
export HIVE_HOME=$PWD/hive
export PATH=$JAVA_HOME/bin:$PATH:$HIVE_HOME/bin
- 错误2
1. 报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
MetaException(message:Version information not found in metastore. )
2. 原因:新版驱动包是com.mysql.cj.jdbc.Driver
3. 处理方法:vim hive-site.xml
修改前:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
修改后:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
- 错误3
1. 报错:Caused by: MetaException(message:Version information not found in metastore
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
2. 原因:第一次启动hive的版本检查(之前没启动过他找不到version号就会报错)
3. 处理方法:hive-site.xml中加上一项配置
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
- 错误4
1. 报错:Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: 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))
2. 原因:没有初始化hive的元数据库,默认情况下,Hive的元数据保存在了内嵌的derby数据库里
3. 处理方法:schematool -dbType mysql -initSchema
- 错误5
1. 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
2. 原因:初步确定是hive表的访问mysql权限问题
3. 处理方法:mysql> GRANT ALL ON *.* to ‘root’@’%’ IDENTIFIED BY ‘hive’ with grant option; #赋予任何主机访问数据的权限
- 错误6
1. 报错:Found class jline.Terminal, but interface was expected
2. 原因:hadoop里面的jline包版本太低
3. 处理方法:把hive的lib目录下的jline包拷到hadoop的lib目录下,记得删除之前那个低版本的哦
- 错误7
1. 报错:Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/root/0f671ef9-fe2e-48db-9019-c08145fe9f75. Name node is in safe mode.
2. 原因:hadoop安全模式开启的
3. 处理方法:关闭hadoop安全模式,Hadoopdfsadmin -safemode leave
- 错误8
1. 报错:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘hive.dbs’ doesn’t exist
2. 原因:没生成源数据表
3. 处理方法:hive-site.xml,设置如下为true
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
之后再schematool -dbType mysql -initSchema
- 错误9
1. 报错:Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
2. 原因:没有正常启动Hive 的 Metastore Server服务进程。
3. 处理方法:启动Hive 的 Metastore Server服务进程,执行如下命令:
./hive service metastore
- 错误10
1. 报错:将mysql中的数据导入到hive中报错
2. 原因:因为sqoop需要一个hive的包
3. 处理方法:将hive/lib中的hive-common-2.*.jar拷贝到sqoop的lib目录中重新执行试试。
- hive-site.xml(本人的hive配置,可以参考下)
<configuration>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://(这个地方填你自己的mysql所在机器的ip哦):3306/hive?CreateDatabaseIfNotExist=true?useSSL=false;characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
Sqoop的安装
- sqoop1.4.7的安装
安装包地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/
1. 上传sqoop到linux机器上
2. sudo tar -zxvf mysql-connector-java-5.1.40.tar.gz #解压
3. cp /opt/hadoop/hive-2.1.1/lib/mysql-connector-java-8.0.13.jar /opt/hadoop/sqoop-1.4.7/lib #把hive的lib目录下的mysql驱动包拷到sqoop的lib目录下
4. cp /opt/hadoop/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar /opt/hadoop/sqoop-1.4.7/lib #把hadoop的hadoop-common-2.7.3.jar包拷到sqoop的lib目录下
5. service mysql start #确保mysql启动成功了的
6. sqoop list-databases --connect jdbc:mysql://(你mysql所在机器的ip):3306/ --username root -P #测试sqoop与MySQL之间的连接是否成功