远程模式安装Apache Hive

来源:互联网 发布:手机软件加密 软件 编辑:程序博客网 时间:2024/06/16 10:27
近日,在腾讯云和阿里云购买了服务器,尝试搭建大数据环境。在腾讯云选择了安装64位的Centos7.0系统,阿里云选择了安装64位的Wndows  Server2012系统。由于服务器数量的原因,hadoop采取了伪分布式部署模式。Hive有三种安装方式:嵌入模式,本地模式和远程模式。本地模式只是在下面配置的hive-site.xml中,把连接mysql的url中的ip改成localhost或127.0.0.1.
    准备软件:WinSCP,XShell5。

先自己下载好好jdk1.8,hadoop-2.7.0.tar.gz,mysql-connector-java-5.1.41-bin.jar,hive0.13.1.tar.gz等linux环境下的安装包。然后用winSCP上传到腾讯云上,上传的的路径为/usr/local。

一、阿里云安装mysql,并配备远程登录权限
本地下载好mysql-5.7.17-winx64解压包和jdk1.8的安装包,通过windows系统自带的远程桌面连接到阿里云上,在c盘下新建一个文件夹,并且命名为software,把mysql压缩包复制到software文件夹下,并解压。先安装jdk,并配置环境变量;然后安装mysql,并配置环境变量,自行百度。

      启动mysql服务,并登录,执行

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '123456'  WITH GRANT OPTION;(把123456换成你自己的密码就可以)

然后执行flush privileges;即配备了远程登录权限。远程模式安装hive,这个很重要。还需要在阿里云控制台配备安全组,开放3306端口,进站出站都要开放。否则配置hive时会报错,接着在腾讯云下安装jdk+hadoop+hive。


二、腾讯云下安装jdk+hadoop+hive
1、解压上传的包,命令是tar -zxvf 压缩包名字
2、用mv命令,将解压得到的jdk重命名为jdk,然后配备环境变量,回到根目录下,执行vi /etc/profile,在# Functions and aliases go in /etc/bashrc下面追加
      export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin:
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
然后保存退出。执行source /etc/profile命令,刷新。
执行javac,java -version和java命令,查看环境变量是否配置正确。由于只有一台服务器,下面开始hadoop以伪分布式安装。

3、进入到hadoop-2.7.0/etc/hadoop目录下,配置下面圈出的5个文件。


(1)输入vim hadoop-env.sh,将JAVA_HOME的环境变量改成绝对路径,export JAVA_HOME=/usr/local/jdk。
(2)输入vim core-site.xml,在<configuration></configuration>之间加上下面的语句
<!-- 制定HDFS的老大(NameNode)的地址 -->
                <property>
                        <name>fs.defaultFS</name>
                        <value>hdfs://主机名:9000</value>
                </property>
                <!-- 指定hadoop运行时产生文件的存储目录 -->
                <property>
                        <name>hadoop.tmp.dir</name>
                        <value>/usr/tmp</value>
        </property>
保存退出;
(3)输入vim hdfs-site.xml,也在<configuration></configuration>加上
<!-- 指定HDFS副本的数量 -->
                <property>
                        <name>dfs.replication</name>
                        <value>1</value>
        </property>
并保存退出;
(4)输入mv mapred-site.xml.template mapred-site.xml (没有mapred.xml,模版重命名,将mapred-site.xml.template改成mapred.xml)  然后,再输入vim mapred-site.xml,在<configuration></configuration>之间加上
<!-- 指定mapreduce运行在yarn上 -->
                <property>
                        <name>mapreduce.framework.name</name>
                        <value>yarn</value>
        </property>
<property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>腾讯云的内网ip:8088</value>
        </property>
保存退出;
(5)输入vim yarn-site.xml,也是在<configuration></configuration>之间加上
<!-- Site specific YARN configuration properties -->
                <!-- 指定YARN的老大(ResourceManager)的地址 -->
                <property>
                        <name>yarn.resourcemanager.hostname</name>
                        <value>主机名</value>
    </property>
                <!-- reducer获取数据的方式 -->
   <property>
                        <name>yarn.nodemanager.aux-services</name>
                        <value>mapreduce_shuffle</value>
        </property>
保存退出。
4、配置hadoop的环境变量,输入 vim /etc/profile
在后面加上
export HADOOP_HOME=/usr/local/hadoop-2.7.0
在path上追加
:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
然后刷新配置,执行hadoop version命令,查看环境变量是否正确。

5、在hadoop-2.7.0/bin目录下进行格式化,命令是hdfs namenode –format,尽量不要格式化第二次,如果要格式化多次,每次格式化都改变core-site.xml中的hadoop.tmp.dir目录,除非每次格式化前都手动去删除/usr/tmp目录,看到successfully formatted 和格式化过程中没有错误的信息,表示已经成功格式化。

6、启动hadoop,输入 start-all.sh 要输入多次命令,再输入jps,看到下面这6个进程,说明成功启动

在浏览器中验证,输入自己腾讯云服务器的公网ip:8088和50070端口查看。

8088端口的web管理页面,如下图

50070端口web界面,如下图

三、配置hive

1、将解压得到的hive文件重命名为hive。
2、进入到/hive/conf目录,输入vi hive-site.xml,在里面加入下面的配置内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://阿里云公网ip:3306/hive?useSSL=false&amp;createDatabaseIfNotExist=true</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>自己配置远程的root的密码</value>
</property>
</configuration>
保存退出。
3、将mysql-connector-java-5.1.41-bin.jar上传到/hive/lib下。版本不能太高,否则启动时会抛出异常。
4、在hive的/bin下配置输入vi hive-config.sh ,在最后面追加
export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-256}
export JAVA_HOME=/usr/local/jdk/
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop-2.7.0
CLASSPATH=$HIVE_HOME/lib
export CLASSPATH
保存退出。
5、配置环境变量。在根目录下输入
vi /etc/profile,在其中追加
export HIVE_HOME=/usr/local/hive

在path变量后面,追加:$HIVE_HOME/bin

保存退出,刷新配置文件

6、在/hive/bin下输入schematool -initSchema -dbType mysql

7、输入./hive,能启动,说明配置成功。


四、配置过程可能出现的异常
1、hive启动时,如果抛出异常,有可能是mysql-connector-java版本太高,建议换低版本的。
2、腾讯云centos7.0如果在配置中不加上打开hadoop的8088端口,很有可能进不去web管理界面。即mapred-site.xml中的
<property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>腾讯云的内网ip:8088</value>
        </property>

并且,一定是腾讯云主机的内网ip,否则会抛出不能识别主机的异常。

3.配置hive后,hadoop的namenode可能会关闭,即有可能出现8088端口能通过web访问,但50070端口去不能访问,只需要重启。