在Mac上安装Hadoop

简介

Hadoop官网

引自百度百科

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

部署结构

Hadoop官网提供了多重部署方式:全分布式部署、伪分布式部署、独立部署。

  • 全分布式部署

    全分布式部署是正常生产使用的部署方式。此时需要比较多的设备

在这里插入图片描述

  • 伪分布式部署

    伪分布式的尝尽仅用于本机调试使用,他和真是场景比较接近,可以验证的更为准确

在这里插入图片描述

  • 独立部署

    仅用于调试,其实没有启动任何东西

部署在Mac上

Mac机器不是部署使用的机器,在Mac上部署的Hadoop仅用于验证问题或者调试。

这里安装是为了配合Hibench使用,当前Hibench仅支持2.X版本的Hadoop,请下载2.10.0版本。

官网配置地址请点这里,请参照Pseudo-Distributed Operation部分部署

部署流程如下

  • 下载安装包

    下载地址 https://hadoop.apache.org/releases.html

  • 配置JAVA_HOME

    etc/hadoop/hadoop-env.sh中增加配置

    # 解决部分应用报错/bin/bash: /bin/java: No such file or directory
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
    
  • 配置hdfs配置文件

    etc/hadoop/core-site.xml 官方默认配置说明

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
          <name>hadoop.native.lib</name>
          <value>false</value>
          <description>Mac系统不支持Native lib,希望通过这个而配置禁掉控制台的warning信息</description>
      </property>
    </configuration>
    

    etc/hadoop/hdfs-site.xml 官方默认配置说明

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    
  • 配置ssh

    目标是通过下面命令可以无密码登录本机

    ssh localhost
    

    如果上面命令可以执行,此过程已经完成。

    如果无法访问需要执行下面流程(根据实际情况酌情处理)

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    $ chmod 0600 ~/.ssh/authorized_keys
    

    配置Mac的Remote Login功能

    打开System Preferences->Sharing->Remote Login

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05Suc8tY-1583112842683)(mac-remoate-login.png)]

  • 启动dfs

    # 格式化namenode。在执行此操作前,确保/tmp/hadoop-xxx的目录为空
    bin/hdfs namenode -format
    
    # 启动NameNode和DataNode
    sbin/start-dfs.sh
    
  • 验证dfs

    # 在hdfs上创建一个目录/user
    bin/hdfs dfs -mkdir /user
    
    # 创建目录/user/<username>
    bin/hdfs dfs -mkdir /user/<username>
    
    # 将本地的./etc/hadoop中文件拷贝到dfs的/user/<username>/input中
    bin/hdfs dfs -put etc/hadoop input
    
    # 执行example
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar grep input output 'dfs[a-z.]+'
    
    # 从服务器将结果拷贝到本地
    bin/hdfs dfs -get output output
    
    cat output/*
    
  • 配置yarn

    etc/hadoop/mapred-site.xml 官网默认配置

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    etc/hadoop/yarn-site.xml 官网默认配置

    <configuration>
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
    <!-- Site specific YARN configuration properties -->
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
        <description>解决部分功能报错meiyou8032端口问题</description>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
      </property>
    </configuration>
    
  • 启动yarn

    sbin/start-yarn.sh
    
    #下面命令用于停止yarn
    sbin/stop-yarn.sh
    

问题列表

  • Name node is in safe mode

    Exception in thread "main" org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /user/ysgao/HiBench/Streaming/Seed. Name node is in safe mode.
    The reported blocks 14 has reached the threshold 0.9990 of total blocks 14. The minimum number of live datanodes is not required. In safe mode extension. Safe mode will be turned off automatically in 0 seconds. NamenodeHostName:localhost
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.newSafemodeException(FSNamesystem.java:1424)
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1412)
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:2872)
    	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.delete(NameNodeRpcServer.java:1101)
    

    执行命令

    hadoop dfsadmin -safemode leave
    
  • 找不到java

    /bin/bash: /bin/java: No such file or directory
    

    在hadoop-env.sh中配置

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
    
  • Mkdirs failed to create /var/folders/

    Exception in thread "main" java.io.IOException: Mkdirs failed to create /var/folders/s8/838bdc0s4x32kgtwtk60x2c00000gy/T/hadoop-unjar79052043847303662/META-INF/license
    	at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:150)
    	at org.apache.hadoop.util.RunJar.unJar(RunJar.java:120)
    	at org.apache.hadoop.util.RunJar.unJar(RunJar.java:94)
    	at org.apache.hadoop.util.RunJar.run(RunJar.java:232)
    	at org.apache.hadoop.util.RunJar.main(RunJar.java:158
    

    Mac系统对大小写不敏感,部分文件解压缩会出错。处理方法是手工删除jar包中出错的大写字母文件,使用下面命令重新打包

    cd xxx
    jar cf xxx.jar .
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值