zoukankan      html  css  js  c++  java
  • 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言

    大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用介绍。本文主要讲解如何搭建Hadoop+Hive的环境。

    一、环境准备

    1,服务器选择

    本地虚拟机
    操作系统:linux CentOS 7
    Cpu:2核
    内存:2G
    硬盘:40G

    说明:因为使用阿里云服务器每次都要重新配置,而且还要考虑网络传输问题,于是自己在本地便搭建了一个虚拟机,方便文件的传输以及相关配置,缺点是本来卡的电脑就变得更卡了。具体教程和使用在上一遍博文中。
    地址: http://blog.csdn.net/qazwsxpcm/article/details/78816230。

    2,配置选择

    JDK:1.8 (jdk-8u144-linux-x64.tar.gz)
    Hadoop:2.8.2 (hadoop-2.8.2.tar.gz)
    Hive: 2.1 (apache-hive-2.1.1-bin.tar.gz)

    3,下载地址

    JDK:
    http://www.oracle.com/technetwork/java/javase/downloads
    Hadopp:
    http://www.apache.org/dyn/closer.cgi/hadoop/common
    Hive
    http://mirror.bit.edu.cn/apache/hive/

    百度云盘:
    链接:https://pan.baidu.com/s/1slxBsHv 密码:x51i

    二、服务器的相关配置

    在配置Hadoop+Hive之前,应该先做一下配置。
    做这些配置为了方便,使用root权限。

    1,更改主机名

    首先更改主机名,目的是为了方便管理。
    输入:

    hostname 
    

    查看本机的名称
    然后更改主机名为master
    输入:

    hostnamectl set-hostname master
    

    注:主机名称更改之后,要重启(reboot)才会生效。

    2,做IP和主机名的映射

    修改hosts文件,做关系映射
    输入

    vim /etc/hosts
    
    

    添加
    主机的ip 和 主机名称

    
    192.168.238.128 master
    
    

    3,关闭防火墙

    关闭防火墙,方便访问。

    CentOS 7版本以下输入:
    关闭防火墙

    
    service   iptables stop
    
    
    

    CentOS 7 以上的版本输入:

    
    systemctl stop firewalld.service
    
    

    3,时间设置

    查看当前时间
    输入:

    
    date
    
    

    查看服务器时间是否一致,若不一致则更改
    更改时间命令

    
    date -s ‘MMDDhhmmYYYY.ss’
    
    

    三、Hadoop安装和配置

    Hadoop的具体配置在大数据学习系列之一 ----- Hadoop环境搭建(单机) 中介绍得很详细了。所以本文就大体介绍一下。
    注:具体配置以自己的为准。

    1,环境变量设置

    编辑 /etc/profile 文件 :

    
    vim /etc/profile
    
    

    配置文件:

    
    export HADOOP_HOME=/opt/hadoop/hadoop2.8
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
    export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
    
    

    2,配置文件更改

    先切换到 /home/hadoop/hadoop2.8/etc/hadoop/ 目录下

    3.2.1 修改 core-site.xml

    输入:

    
    vim core-site.xml
    
    

    添加:

    
    <configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/root/hadoop/tmp</value>
            <description>Abase for other temporary directories.</description>
       </property>
       <property>
            <name>fs.default.name</name>
            <value>hdfs://master:9000</value>
       </property>
    </configuration>
    

    3.2.2修改 hadoop-env.sh

    输入:

    
    vim hadoop-env.sh
    
    

    将${JAVA_HOME} 修改为自己的JDK路径

    
    export   JAVA_HOME=${JAVA_HOME}
    
    

    修改为:

    
    export   JAVA_HOME=/home/java/jdk1.8
    
    

    3.2.3修改 hdfs-site.xml

    输入:

    vim hdfs-site.xml
    

    添加:

    <property>
       <name>dfs.name.dir</name>
       <value>/root/hadoop/dfs/name</value>
       <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
    </property>
    <property>
       <name>dfs.data.dir</name>
       <value>/root/hadoop/dfs/data</value>
       <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
    </property>
    <property>
       <name>dfs.replication</name>
       <value>2</value>
    </property>
    <property>
          <name>dfs.permissions</name>
          <value>false</value>
          <description>need not permissions</description>
    </property>
    

    3.2.4 修改mapred-site.xml

    如果没有 mapred-site.xml 该文件,就复制mapred-site.xml.template文件并重命名为mapred-site.xml。
    输入:

    vim mapred-site.xml
    
    

    修改这个新建的mapred-site.xml文件,在节点内加入配置:

    <property>
        <name>mapred.job.tracker</name>
        <value>master:9001</value>
    </property>
    <property>
          <name>mapred.local.dir</name>
           <value>/root/hadoop/var</value>
    </property>
    <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
    </property>
    
    

    3,Hadoop启动

    启动之前需要先格式化
    切换到/home/hadoop/hadoop2.8/bin目录下
    输入:

    ./hadoop  namenode  -format
    

    格式化成功后,再切换到/home/hadoop/hadoop2.8/sbin目录下
    启动hdfs和yarn
    输入:

    start-dfs.sh
    start-yarn.sh
    

    启动成功后,输入jsp查看是否启动成功
    在浏览器输入 ip+8088 和ip +50070 界面查看是否能访问
    能正确访问则启动成功

    四、Mysql安装

    因为Hive的默认元数据是Mysql,所以先要安装Mysql。
    Mysql有两种安装模式,可自行选择。

    1,yum安装

    首先查看mysql 是否已经安装
    输入:

    rpm -qa | grep mysql   
    
    

    如果已经安装,想删除的话
    输入:
    普通删除命令:

    rpm -e mysql
    

    强力删除命令:

    rpm -e --nodeps mysql    
    

    依赖文件也会删除

    安装mysql
    输入:

    yum list mysql-server  
    

    如果没有,则通过wget命令下载该包
    输入:

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm   
    
    

    下载成功之后,再输入命令安装

    yum install mysql-server
    
    

    在安装过程中遇到选择输入y就行了


    安装成功后,输入 service mysqld start 启动服务

    输入:
    mysqladmin -u root -p password '123456'
    来设置密码
    输入之后直接回车(默认是没有密码的)
    然后再输入
    mysql -u root -p

    通过授权法更改远程连接权限
    输入: grant all privileges on . to 'root'@'%' identified by '123456';
    注:第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示 用户密码 如果不常用 就关闭掉
    输入:flush privileges; //刷新

    在防火墙关闭之后,使用SQLYog之类的工具测试是否能正确连接

    2,编译包安装

    Mysql文件准备

    将下载好的mysql安装包上传到linux服务器
    解压mysql解压包,并移动到/usr/local目录下,重命名为mysql。
    命令:

    
    tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local
    cd /usr/local
    mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql
    
    

    注: mysql默认的路径是就是/usr/local/mysql ,如果安装的地方更改,需要更改相应的配置文件。

    安装mysql

    切换到mysql的目录 /usr/local/mysql
    输入:

     ./scripts/mysql_install_db --user=mysql
    
    

    成功安装mysql之后,输入:

    service mysql start  或  /etc/init.d/mysql start
    

    查看是否启动成功
    输入:

     ps -ef|grep mysql
    

    切换到 /usr/local/mysql/bin 目录下
    设置密码
    mysqladmin -u root password '123456'入mysql
    输入:

    mysql -u root -p
    

    设置远程连接权限
    输入:
    grant all privileges on . to 'root'@'%' identified by '123456';
    然后输入:
    flush privileges;

    说明: 第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示用户密码 如果不常用就关闭掉。

    使用本地连接工具连接测试

    五、Hive环境安装和配置

    1,文件准备

    将下载下来的Hive 的配置文件进行解压
    在linux上输入:

     tar -xvf  apache-hive-2.1.1-bin.tar.gz
    

    然后移动到/opt/hive 里面,将文件夹重命名为 hive2.1
    输入

    mv  apache-hive-2.1.1-bin  /opt/hive
    mv apache-hive-2.1.1-bin hive2.1
    

    2,环境配置

    编辑 /etc/profile 文件
    输入:

    vim /etc/profile
    

    添加:

    export HIVE_HOME=/opt/hive/hive2.1
    export HIVE_CONF_DIR=${HIVE_HOME}/conf
    export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:$PATH
    
    

    注:实际配置以自己的为准!
    输入:

    source  /etc/profile
    

    使配置生效

    3,配置更改

    5.3.1新建文件夹

    在修改配置文件之前,需要先在root目录下建立一些文件夹。

    mkdir /root/hive
    mkdir /root/hive/warehouse
    

    新建完该文件之后,需要让hadoop新建/root/hive/warehouse 和 /root/hive/ 目录。
    执行命令:

    $HADOOP_HOME/bin/hadoop fs -mkdir -p /root/hive/
    $HADOOP_HOME/bin/hadoop fs -mkdir -p /root/hive/warehouse
    

    给刚才新建的目录赋予读写权限,执行命令:

    $HADOOP_HOME/bin/hadoop fs -chmod 777 /root/hive/
    $HADOOP_HOME/bin/hadoop fs -chmod 777 /root/hive/warehouse 
    

    检查这两个目录是否成功创建
    输入:

    $HADOOP_HOME/bin/hadoop fs -ls /root/
    $HADOOP_HOME/bin/hadoop fs -ls /root/hive/
    

    可以看到已经成功创建

    5.3.2 修改hive-site.xml

    切换到 /opt/hive/hive2.1/conf 目录下
    将hive-default.xml.template 拷贝一份,并重命名为hive-site.xml
    然后编辑hive-site.xml文件

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

    编辑hive-site.xml文件,在 中添加:

    <!-- 指定HDFS中的hive仓库地址 -->  
      <property>  
        <name>hive.metastore.warehouse.dir</name>  
        <value>/root/hive/warehouse</value>  
      </property>  
    
    <property>
        <name>hive.exec.scratchdir</name>
        <value>/root/hive</value>
      </property>
    
      <!-- 该属性为空表示嵌入模式或本地模式,否则为远程模式 -->  
      <property>  
        <name>hive.metastore.uris</name>  
        <value></value>  
      </property>  
    
    <!-- 指定mysql的连接 -->
     <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://master:3306/hive?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>123456</value>
        </property>
        <property>
       <name>hive.metastore.schema.verification</name>
       <value>false</value>
        <description>
        </description>
     </property>
    

    然后将配置文件中所有的

    ${system:java.io.tmpdir}
    

    更改为 /opt/hive/tmp (如果没有该文件则创建),
    并将此文件夹赋予读写权限,将

      ${system:user.name} 
    

    更改为 root

    例如:
    更改之前的:

    更改之后:

    配置图:

    注: 由于hive-site.xml 文件中的配置过多,可以通过FTP将它下载下来进行编辑。也可以直接配置自己所需的,其他的可以删除。 MySQL的连接地址中的master是主机的别名,可以换成ip。

    5.3.3 修改 hive-env.sh

    修改hive-env.sh 文件,没有就复制 hive-env.sh.template ,并重命名为hive-env.sh

    在这个配置文件中添加

    export  HADOOP_HOME=/opt/hadoop/hadoop2.8
    export  HIVE_CONF_DIR=/opt/hive/hive2.1/conf
    export  HIVE_AUX_JARS_PATH=/opt/hive/hive2.1/lib
    

    5.3.4 添加 数据驱动包

    由于Hive 默认自带的数据库是使用mysql,所以这块就是用mysql
    将mysql 的驱动包 上传到 /opt/hive/hive2.1/lib

    六、Hive Shell 测试

    在成功启动Hadoop之后
    切换到Hive目录下
    输入:

    cd /opt/hive/hive2.1/bin
    

    首先初始化数据库
    初始化的时候注意要将mysql启动
    输入:

    schematool  -initSchema -dbType mysql 
    
    

    执行成功之后,可以看到hive数据库和一堆表已经创建成功了

    切换到 cd /opt/hive/hive2.1/bin
    进入hive (确保hadoop以及成功启动)
    输入:

    hive
    

    进入hive 之后
    做一些简单的操作
    新建一个库,然后在建一张表
    基本操作和普通的关系型数据库差不多
    创建库:

    create database db_hiveTest;
    

    创建表:

    create  table  db_hiveTest.student(id int,name string)  row  format  delimited  fields   terminated  by  '	';
    
    

    说明: terminated by ' ' 表示文本分隔符要使用Tab,行与行直接不能有空格。

    加载数据
    新打开一个窗口
    因为hive 不支持写,所以添加数据使用load加载文本获取。
    新建一个文本

    touch  /opt/hive/student.txt
    

    编辑该文本添加数据
    输入:

    vim /opt/hive/student.txt
    

    添加数据:
    中间的空格符使用Tab建

    1001    zhangsan
    1002    lisi
    1003    wangwu
    

    说明: 文本可以在Windows上面新建,然后通过ftp上传到linux中,需要注意文本的格式为unix 格式。

    切换到hive shell
    加载数据
    输入:

    load data local inpath '/opt/hive/student.txt'  into table db_hivetest.student;
    

    然后查询该数据
    输入:

    select * from db_hiveTest.student;
    

    本文的Hadoop+Hive的配置就到此结束了,谢谢阅读!

    其它

    更多的hive使用请参考官方文档
    https://cwiki.apache.org/confluence/display/Hive/LanguageManual
    环境搭建参考:
    http://blog.csdn.net/pucao_cug/article/details/71773665

    版权声明:
    作者:虚无境
    博客园出处:http://www.cnblogs.com/xuwujing
    CSDN出处:http://blog.csdn.net/qazwsxpcm    
    个人博客出处:http://www.panchengming.com
    原创不易,转载请标明出处,谢谢!

  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/xuwujing/p/8045821.html
Copyright © 2011-2022 走看看