centos下hive和hadoop以及mysql的安装,集成和配置

一.下载安装
    mysql的安装
    在这里我选择了hadoop的版本是hadoop-2.7.4.tar.gz,hive的版本是apache-hive-2.2.0-bin.tar.gz
下载完成之后通过命令进行解压

tar -zxvf xxx.tar.gz

然后配置在根目录下的.bashrc文件中

export HADOOP_HOME=/root/hadoop/hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HIVE_HOME=/root/hadoop/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:/root/hadoop/hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/root/hadoop/hive/lib/*:.

二.修改hadoop的配置文件

1.首先修改hadoop中etc下hadoop下的hadoop-env.sh的配置文件,在里面导入java的安装路径

export JAVA_HOME=/usr/lib/java/jdk

2.修改hdfs-site.xml配置文件,加上下面配置

<configuration>
        <property>
                 <name>dfs.replication</name>
                 <value>1</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
</configuration>

3.修改core-site.xml的配置文件,加上下面配置

 <configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value> 端口
        </property>
         <property>
                <name>hadoop.tmp.dir</name>
                <value>/root/hadoop/data</value> 数据存放路径
        </property>
        <property>
             <name>hadoop.proxyuser.lcc.groups</name>
             <value>*</value>
        </property>
         <property>
             <name>hadoop.proxyuser.lcc.hosts</name>
             <value>*</value>
        </property>
</configuration>

hadoop.tmp.dir 必须配置,而且每次格式化,要清空,否则datanode会无法启动
后面两个配置是hive连接必须配置

4.免密要配置

cd ~/.ssh
ssh-****** -t rsa
cat id_rsa.pub >> authorized_keys
ssh-****** -t rsa -P “”
cat /Users/lcc/.ssh/id_rsa.pub >> /Users/lcc/.ssh/authorized_keys

5.格式化(只需要格式化一次)

bin/hdfs namenode -format

6.启动

./start-all.sh

7.检查是否启动成功
centos下hive和hadoop以及mysql的安装,集成和配置
输入jps显示上面红框里面的东西就表示启动成功!

三.修改hive的配置文件
1.进入到hive中的conf文件夹中,找到hive-site.xml如果没有通过以下命令通过模板复制一个

cp hive-default.xml.template hive-site.xml

2.修改配置文件hive-site.xml
首先在配置文件property配置项的前面加上以下关于mysql数据库的配置

	    <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://hadoop000:3306/hiveDB?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value>
        </property>

        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>

一定要放在hive.exec.script.wrapper配置项的上面
3. 拷贝mysql的驱动jar到hive的lib目录下,一定要用这个服务器中maven仓库中有的mysql驱动jar。我用的是

	  mysql-connector-java-5.1.43.jarmysql-connector-java-5.1.43.jar

4.由于在上面的配置文件中连接了mysql数据库,并且创建了一个新的数据库在mysql中,因此要初始化
进入到hive的bin目录下执行下面的命令:

schematool -dbType mysql -initSchema	

可能出现下面错误
centos下hive和hadoop以及mysql的安装,集成和配置
如果出现这种错误就是因为没有按照我上面的配置加在配置文件中,配置文件中的最后一行就是解决这个问题的。

5.启动hive
输入hive命令即可:
可能会出现下面这个错误,就算启动的时候但是操作hive数据库的时候也会失败。
centos下hive和hadoop以及mysql的安装,集成和配置

解决方法:
在安装的hive的根目录下创建一个tmp文件夹,通过pwd命令找到所在目录,然后修改配置文件hive-site.xml
找到下面这几个标签项的配置,然后做一下修改:

		hive.querylog.location 
		hive.exec.local.scratchdir 
		hive.downloaded.resources.dir

将所有的 system:java.io.tmpdirtmp/root/hadoop/hive/tmp{system:java.io.tmpdir} 修改为tmp所在的目录我的是/root/hadoop/hive/tmp 将所有的{system:user.name} 修改为${user.name}
至此,配置就完成了

四.成功的操作

1.在mysql数据库中会创建成功在hive配置文件中指定的数据库hiveDB
centos下hive和hadoop以及mysql的安装,集成和配置

2.可以在hive命令行中进行创建表的一些操作:
centos下hive和hadoop以及mysql的安装,集成和配置

3.同时会在hdfs中也会显示创建成功,因为会有相应的数据同步,证明可以通过hive操作hadoop了,输入一下命令进行查看

 hadoop fs -lsr /

显示结果如下:
centos下hive和hadoop以及mysql的安装,集成和配置

4.那么可以看下mysql下的hiveDB有什么变化:
centos下hive和hadoop以及mysql的安装,集成和配置
在增加数据库的时候同样数据也可以在mysql中查到
centos下hive和hadoop以及mysql的安装,集成和配置
到这里真正完成了mysql和hadoop以及hive关系的创建和联系。