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
    原创不易,转载请标明出处,谢谢!

  • 相关阅读:
    OnFileOpen与OnOpenDocument(转)
    Wpf应用程序进入全屏和退出全屏
    在WPF中使用Emgu加载Image<,>图像的两种方法
    C#中ListBox控件重绘Item项
    sdut2404 Super Prime ACM算法设计
    真彩色制式下IplImage转成CBitmap格式
    【转】中缀表达式转换为后缀表达式
    MFC中CImage的简单复制方法 (Copy CImage)
    齐鲁软件大赛尖峰时刻团队
    Priest John's Busiest Day HDU2491 ACM算法设计
  • 原文地址:https://www.cnblogs.com/xuwujing/p/8045821.html
Copyright © 2011-2022 走看看