在Ubuntu下安装Hadoop和Hive

一、前置
1.1创建Hadoop用户

$ sudo useradd -m hadoop -s /bin/bash  #创建hadoop用户,并使用/bin/bash作为shell
$ sudo passwd hadoop                   #为hadoop用户设置密码
$ sudo adduser hadoop sudo             #为hadoop用户增加管理员权限
$ su - hadoop                          #切换当前用户为用户hadoop
$ sudo apt-get update                  #更新hadoop用户

1.2安装SSH

$ sudo apt-get install openssh-server   #安装SSH server
$ ssh localhost                         #登陆SSH,第一次登陆输入yes
$ exit                                  #退出登录的ssh localhost
$ cd ~/.ssh/                            #如果没法进入该目录,执行一次ssh localhost
$ ssh-keygen -t rsa  

在输入完 $ ssh-keygen -t rsa 命令时,需要连续敲击回车三次

其中,第一次回车是让KEY存于默认位置,以方便后续的命令输入。第二次和第三次是确定passphrase,相关性不大。两次回车输入完毕以后,如果出现类似于下图所示的输出,即成功:
图片描述

之后输入

$ cat ./id_rsa.pub >> ./authorized_keys #加入授权
$ ssh localhost                         #此时已不需密码即可登录localhost,并可见下图。如果失败则可以搜索SSH免密码登录来寻求答案

二、安装JDK1.8.0_221
首先在oracle官网下载JDK1.8.0_221
http://www.oracle.com/technet… 接下来进行安装与环境变量配置,也可以在百度直接搜索下载安装(避免oracle的日常抽风)

$ mkdir /usr/lib/jvm                                        #创建jvm文件夹
$ sudo tar zxvf 你的jdk文件名  -C /usr/lib                   #/解压到/usr/lib/jvm目录下
$ cd /usr/lib/jvm                                           #进入该目录
$ mv  jdk1.8.0_221 java                                      #重命名为java
$ vi ~/.bashrc                                              #给JDK配置环境变量

:其中如果权限不够,无法在相关目录下创建jvm文件夹,那么可以使用 $ sudo -i 语句进入root账户来创建文件夹。

$ vim ~/.bashrc

:若没有vim可以用gedit代替或使用sudo apt安装vim
在 ~/.bashrc 文件中添加如下代码

#Java Environment
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

修改完成后,使用如下命令

$ source ~/.bashrc                       #使新配置的环境变量生效
$ java -version                          #检测是否安装成功,查看java版本

若出现Java版本即为安装成功

三、安装Hadoop3.2.0
先下载hadoop-3.2.0.tar.gz,链接如下:
http://mirrors.hust.edu.cn/ap…

进行安装

$ sudo tar -zxvf  hadoop-3.2.0.tar.gz -C /usr/local    #解压到/usr/local目录下
$ cd /usr/local
$ sudo mv  hadoop-3.2.0    hadoop                      #重命名为hadoop
$ sudo chown -R hadoop ./hadoop                        #修改文件权限

给hadoop配置环境变量,将下面代码添加到.bashrc文件:

#Hadoop Environment
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

同样,执行source ~./bashrc使设置生效,并查看hadoop是否安装成功,若出现hadoop版本即为安装成功

四、伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。首先将jdk1.8的路径添(export JAVA_HOME=/usr/lib/jvm/java )加到hadoop-env.sh文件


接下来修改core-site.xml文件:

<configuration>
         <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
        </property>
</configuration>

修改hdfs-site.xml文件:
<configuration>

    <property>
         <name>dfs.replication</name>
         <value>1</value>
    </property>
    <property>
         <name>dfs.namenode.name.dir</name>
         <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
         <name>dfs.datanode.data.dir</name>
         <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
    <property>
          <name>dfs.http.address</name>
          <value>0.0.0.0:50070</value>
    </property>

</configuration>

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(可参考官方教程),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

配置完成后,执行 NameNode 的格式化

$ ./bin/hdfs namenode -format

启动namenode和datanode进程,并查看启动结果

$ ./sbin/start-dfs.sh
$ jps

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

图中只需有四个进程”JPS” “NameNode” “DateNode” “SecondaryNameNode”即可

此时也有可能出现要求输入localhost密码的情况 ,如果此时明明输入的是正确的密码却仍无法登入,其原因是由于如果不输入用户名的时候默认的是root用户,但是安全期间ssh服务默认没有开root用户的ssh权限
输入代码:

$vim /etc/ssh/sshd_config

检查PermitRootLogin 后面是否为yes,如果不是,则将该行代码 中PermitRootLogin 后面的内容删除,改为yes,保存。之后输入下列代码重启SSH服务:

$ /etc/init.d/sshd restart

成功启动后,在浏览器中输入localhost:50070会出现以下页面

五、安装Hive-3.1.2
1、通过百度下载Hive-3.1.2的tar包
2、解压Hive到/opt目录下

$ tar zxf apache-hive-3.1.2-bin.tar.gz
$ sudo mv apache-hive-3.1.2-bin /opt/hive-2.3.3

3、配置Hive环境变量

$ vim ~/.bashrc

在bashrc文件中添加如下代码,如需修改权限请使用chmod命令

#Hive Enviroment
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

4、在/opt/hive/conf目录下创建hive-site.xml,并添加以下代码在文件中

<configuration>
<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
     <description>
          Enforce metastore schema version consistency.
          True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic
          schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures
          proper metastore schema migration. (Default)
          False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
      </description>
    </property>
    <!-- 存储在hdfs上的数据路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
        <description>location of default database for the warehouse</description>
    </property>
    <!-- 本地mysql -->
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
    <property>
       <name>javax.jdo.option.ConnectionURL</name>
       <value>jdbc:mysql://localhost: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.ConnectionPassword</name>
       <value>你的数据库密码</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
     </property>
</configuration>

在/opt/hive/conf下执行该命令

$ cp hive-env.sh.template hive-env.sh

5、将JDBC的jar包拷贝在/opt/hive/lib目录下
6、在/opt/hive/bin目录下执行以下命令

$ ./schematool -dbType mysql -initSchema
$ ./schematool -dbType mysql -info
$ hive

执行完hive命令后即可使用Hive

:本文中并未提及mysql的安装,在安装hive时需要安装mysql,并设置权限,请读者自行查询方法

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理