Windows平台Hadoop、Hive环境搭建

Hadoop搭建

安装配置

  • 参考:https://www.jianshu.com/p/faf038923093

  • 开源镜像仓库下载:

  • hadoop-xxx/etc/hadoop/core-site.xml

     
    1
    <configuration>
    2
    <property>
    3
    <name>fs.defaultFS</name>
    4
    <value>hdfs://localhost:9000</value>
    5
    </property>
    6
    <property>
    7
    <name>hadoop.tmp.dir</name>
    8
    <value>file:/D:/hadoop-2.10.0/tmp</value>
    9
    </property>
    10
    </configuration>
  • hadoop-xxx/etc/hadoop/mapred-site.xml

    • 文章的配置有问题,提交hadoop任务会卡住,如下配置没有问题
     
    1
    <configuration>
    2
    <property>
    3
    <name>mapreduce.job.tracker</name>
    4
    <value>hdfs://localhost:8001</value>
    5
    <final>true</final>
    6
    </property>
    7
    </configuration>
  • hadoop-xxx/etc/hadoop/hdfs-site.xml

     
    1
    <configuration>
    2
    <property>
    3
    <name>dfs.replication</name>
    4
    <value>1</value>
    5
    </property>
    6
    <property>
    7
    <name>dfs.namenode.name.dir</name>
    8
    <value>/d:/doc/localBigDataEnv/jar/hadoop-2.9.2/data/namenode</value>
    9
    </property>
    10
    <property>
    11
    <name>dfs.datanode.data.dir</name>
    12
    <value>/d:/doc/localBigDataEnv/jar/hadoop-2.9.2/data/datanode</value>
    13
    </property>
    14
    </configuration>
  • hadoop-xxx/etc/hadoop/yarn-site.xml

    • 与上面网页上的不同
     
    1
    <configuration>
    2
    <!-- Site specific YARN configuration properties -->
    3
    <property>
    4
    <name>yarn.resourcemanager.hostname</name>
    5
    <value>0.0.0.0</value>
    6
    </property>
    7
    <property>
    8
    <name>yarn.nodemanager.local-dirs</name>
    9
    <value>D:\hadoop_data\tmp-nm</value>
    10
    </property>
    11
    <property>
    12
    <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
    13
    <value>98.5</value>
    14
    </property>
    15
    </configuration>

§ 启动

§ 命令

  • 创建文件夹

    • hadoop fs -mkdir /input
  • put数据

    • hadoop fs -put xxx /input
  • 测试word count 例子

    • hadoop jar D:\hadoop-2.10.0\share\hadoop\mapreduce\hadoop-mapreduce-examples-2.10.0.jar wordcount /input /output

      执行结果写入到hdfs output文件夹下

  • windows文件夹权限

    https://stackoverflow.com/questions/2928738/how-to-grant-permission-to-users-for-a-directory-using-command-line-in-windows

  • Hive搭建

    § 安装配置

    • 参考 :https://my.oschina.net/u/2474629/blog/3069332

    • hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。

    • 下载:

      • 添加HADOOP_HOME 和 HIVE_HOME

    • apache-hive-2.3.6\conf\hive-site.xml

      • 注意这里配置了mysql的驱动,需要安装mysql,我之前已经装过了

        • 建立表hive

        • 配置用户名密码

        • 将mysql连接驱动拷贝到D:\apache-hive-2.3.6-bin\lib下,注意mysql的版本

          • mysql -V 查看mysql的版本
       
      1
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      2
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      3
      <configuration>
      4
      <property>
      5
      <name>hive.metastore.warehouse.dir</name>
      6
      <value>/user/hive/warehouse</value>
      7
      <description>hive的数据存储目录,指定的位置在hdfs上的目录</description>
      8
      </property>
      9
      <property>
      10
      <name>hive.exec.scratchdir</name>
      11
      <value>c:/temp</value>
      12
      <description>hive的临时数据目录,指定的位置在hdfs上的目录</description>
      13
      </property>
      14
      <property>
      15
      <name>hive.exec.local.scratchdir</name>
      16
      <value>D:/hivedata/iotmp</value>
      17
      <description></description>
      18
      </property>
      19
      <property>
      20
      <name>hive.downloaded.resources.dir</name>
      21
      <value>D:/hivedata/iotmp</value>
      22
      <description></description>
      23
      </property>
      24
      <property>
      25
      <name>hive.querylog.location</name>
      26
      <value>D:/hivedata/iotmp</value>
      27
      <description></description>
      28
      </property>
      29
      <property>
      30
      <name>hive.server2.logging.operation.log.location</name>
      31
      <value>D:/hivedata/logs</value>
      32
      <description></description>
      33
      </property>
      34
      <!--mysql-->
      35
      <property>
      36
      <name>javax.jdo.option.ConnectionURL</name>
      37
      <value>jdbc:mysql://localhost:3306/hive?serverTimezone=GMT</value>
      38
      </property>
      39
      <property>
      40
      <name>javax.jdo.option.ConnectionDriverName</name>
      41
      <value>com.mysql.jdbc.Driver</value>
      42
      </property>
      43
      <property>
      44
      <name>javax.jdo.option.ConnectionUserName</name>
      45
      <value>root</value>
      46
      </property>
      47
      <property>
      48
      <name>javax.jdo.option.ConnectionPassword</name>
      49
      <value>root</value>
      50
      </property>
      51
      <property>
      52
      <name>datanucleus.autoCreateSchema</name>
      53
      <value>true</value>
      54
      </property>
      55
      <property>
      56
      <name>datanucleus.autoCreateTables</name>
      57
      <value>true</value>
      58
      </property>
      59
      <property>
      60
      <name>datanucleus.autoCreateColumns</name>
      61
      <value>true</value>
      62
      </property>
      63
      <property>
      64
      <name>hive.metastore.schema.verification</name>
      65
      <value>false</value>
      66
      <description/>
      67
      </property>
      68
      </configuration>

    § 启动

    • hdfs上创建hive数据仓库地址:

      • hdfs dfs -mkdir -p /user/hive/warehouse
      • hdfs dfs -mkdir -p /tmp/hive
      • hdfs dfs -chmod -R 777 /
    • 初始化元数据

    • 方式一:hive.cmd运行 (以管理员方式运行)

    • 方式二:hive 安装路径:D:\doc\localBigDataEnv\jar\apache-hive-3.1.2-bin,红色部分配置到环境变量path中,图下图运行即可
      • 创建数据库

        • create database biwarehouse;

        • 会在hdfs上创建对应的存储目录,以.db结尾

        • 创建表会在 biwarehouse.db下创建同名的目录

  • § 问题

    • 1、如果你的 hive 表里使用了map 数据结构,hive 执行 select 操作是可能报错:

      java.lang.IncompatibleClassChangeError: Class com.google.common.collect.ImmutableSortedMap does not implement the requested interface java.util.NavigableMap
      
      • 原因:

        • hadoop 里面使用的 guava 版本太低,保持 hive 和 hadoop 的 guava 版本一致
      • 解决方法

        • 停止hadoophive, 把 hive 中的 guava 包 拷贝到 hadoop 的 share\hadoop\common\lib的目录下,即可正常运行

posted @ 2020-12-11 16:07  Spirited-away  阅读(455)  评论(0)    收藏  举报