• 使用docker搭建hadoop环境,并配置伪分布式模式


    docker

    1、下载docker镜像

    docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop:latest

    注:此镜像为阿里云个人上传镜像,比较符合目前我的需求,镜像为搭建好的hadoop环境,见https://dev.aliyun.com/detail.html?spm=5176.1972343.2.14.Q2Swxa&repoId=4030 
    2、运行docker镜像

    docker run -itd --name hadoop -h hadoop -P registry.aliyuncs.com/kaibb/hadoop

    3、查看容器运行状态

    docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    733301fddfa5 registry.aliyuncs.com/kaibb/hadoop "/usr/sbin/sshd -D" 6 seconds ago Up 4 seconds 0.0.0.0:32783->22/tcp, 0.0.0.0:32782->2122/tcp, 0.0.0.0:32781->8030/tcp, 0.0.0.0:32780->8031/tcp, 0.0.0.0:32779->8032/tcp, 0.0.0.0:32778->8033/tcp, 0.0.0.0:32777->8040/tcp, 0.0.0.0:32776->8042/tcp, 0.0.0.0:32775->8088/tcp, 0.0.0.0:32774->19888/tcp, 0.0.0.0:32773->49707/tcp, 0.0.0.0:32772->50010/tcp, 0.0.0.0:32771->50020/tcp, 0.0.0.0:32770->50070/tcp, 0.0.0.0:32769->50075/tcp, 0.0.0.0:32768->50090/tcp hadoop

    注:显示的信息比较乱,这里把主要信息解释一下。当前容器映射出几个不同的端口,表格如下:

    - 32783->22
    - 32782->2122
    - 32781->8030
    - 32780->8031
    - 32779->8032
    - 32778->8033
    - 32777->8040
    - 32776->8042
    - 32775->8088
    - 32774->19888
    - 32773->49707
    - 32772->50010
    - 32771->50020
    - 32770->50070
    - 32769->50075
    - 32768->50090

    如果之后容器外想访问容器的某个端口时,只需要访问容器ip+映射端口即可

    4、进入容器

    docker exec -it hadoop bash
    //格式化namenode hadoop安装在/opt/tools下,因为己经加了执行目录的环境变量,所以在任何目录下运行hadoop命令都可以
     

    hadoop

    1、配置hadoop伪分布模式 
    由于此docker镜像已经进行了相关配置,故可直接跳过配置过程,直接启动服务。可以跳过此部分

    Hadoop 可以在单节点上以所谓的伪分布式模式运行,此时每一个 Hadoop 守护进程都作为一个独立的 Java 进程运行。 
    修改如下配置文件,文件地址位于hadoop的安装目录下,此容器中的位置为:/opt/tools/hadoop/etc/hadoop/

    etc/hadoop/core-site.xml:

    <configuration>
    <!-- 配置hdfs的namenode的地址 -->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>

    etc/hadoop/hdfs-site.xml:

    <configuration>
    <!--指定hdfs存储数据的副本数量-->
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <!--指定datanode的存储地-->
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/hadoop/data</value>
    </property>
    <!--指定namenode的存储地-->
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/name</value>
    </property>
    </configuration>

    etc/hadoop/mapred-site.xml

    <configuration>
    <!--指定mapreduce编程模型运行在yarn上-->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

    etc/hadoop/yarn-site.xml

    <configuration>
    <!--mapreduce执行shuffle时获取数据的方式-->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    </configuration>

    2、格式化一个新的分布式文件系统:

    bin/hdfs namenode -format

    当看到 INFO common.Storage: Storage directory /hadoop/name has been successfully formatted. 的信息就表示格式化成功,一般不成功的情况多为xml配置有误。 
    3、启动 NameNode 守护进程和 DataNode 守护进程:

    ./sbin/start-dfs.sh
    jps //列出本机所有java进程的pid,显示如下内容则表示成功
    root@hadoop:/opt/tools/hadoop# jps
    609 Jps
    210 NameNode
    307 DataNode
    494 SecondaryNameNode

    4、启动yarn进程

    ./sbin/start-yarn.sh
    jps //此时yarn进程已开
    210 NameNode
    915 Jps
    307 DataNode
    667 ResourceManager
    494 SecondaryNameNode
    766 NodeManager
  • 相关阅读:
    python发送邮件
    常用的排序算法
    关于前端ajax请求url为何添加一个随机数
    RabbitMQ消息队列
    shell编程基本语法和变量
    第70课 展望:未来的学习之路(完结)
    第69课 技巧:自定义内存管理
    第68课 拾遗:让人迷惑的写法
    第67课 经典问题解析五
    第66课 C++中的类型识别
  • 原文地址:https://www.cnblogs.com/leedaily/p/8250429.html
Copyright © 2020-2023  润新知