在Ubuntu下安装Hadoop和Hive

12次阅读

共计 5513 个字符,预计需要花费 14 分钟才能阅读完成。

一、前置
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,并设置权限,请读者自行查询方法

正文完
 0