zoukankan      html  css  js  c++  java
  • hadoop学习1---基础环境搭建与使用

    运行结果附图

    在此把本周一课上的操作简要记录:

    首先做一些基本的配置,启动服务的准备工作:

    1. 首先启动三个docker

      docker start master

      docker attach master

      docker start slave1

      docker attach slave1

      docker start slave2

      docker attach slave2

    2. 配置/etc/hosts文件 

    3. 三个容器开启ssh服务

      service sshd start

    4. 分别开启master 上的namenode 服务和slave上的 datanode服务

      service hadoop-hdfs-namenode start

      service hadoop-hdfs-datanode start

    5. 分别开启master 上的resourcemanager 服务和slave上的nodemanager服务

      service hadoop-yarn-resourcemanager start

      service hadoop-yarn-nodemanager start

    6. 开启master上的history服务

      service hadoop-mapreduce-historyserver start

    至此基本准备工作完成,可以进行一个小的mapreduce示例:文件中单词计数统计

    1. 首先 master容器内编辑一个文件 ,简单存放几个单词,命名为wordcount 放到/home目录下
      文件内容如图1

      图1:

      2015-03-17 14:52:17 的屏幕截图

    2. 将本地文件放到hadoop的hdfs文件系统中

      [root@db9beb01ee90 /]# hadoop fs -put /home/wordcount /user/root/

    3. 但是默认的是安全模式,需要切换到hadoop的超级用户下,然后将 safe mode关闭

      [root@db9beb01ee90 /]# su hdfs

      bash-4.1$ hadoop dfsadmin -safemode leave

      看到有safe mode is OFF的消息后,可以退出超级用户

      bash-4.1$ exit

      图2:

      2015-03-16 16:25:38 的屏幕截图

    4. 重新输入步骤2中的指令,把本地的wordcount文档,放到hdfs中的/user/root下

      [root@db9beb01ee90 /]# hadoop fs -put /home/wordcount /user/root/

    5. 观察一下目前hdfs下的文件

      [root@db9beb01ee90 /]# hadoop fs -ls /user/root

      发现wordcount已经存在在 /user/root文件下了

      图3:

      2015-03-16 16:30:59 的屏幕截图

    6. 然后,使用hadoop的jar包完成mapreduce任务

      [root@db9beb01ee90 /]# hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/root/wordcount /user/root/wordcountout

      其中/user/root/wordcount是输入路径 /user/root/wordcountout是单词统计的结果的输出路径

      然后可以看到 hadoop启动了mapreduce任务。

      图4:

      2015-03-16 16:33:51 的屏幕截图

      图5:

      2015-03-16 16:34:12 的屏幕截图

    7. 最后我们可以看一下mapreduce的输出结果

      [root@db9beb01ee90 /]# hadoop fs -ls /user/root/wordcountout

      图6:

      2015-03-16 16:39:50 的屏幕截图

    8. 此项任务的输入结果有只有两个文件(输出结果的文件个数不确定,但是可以配置)

      Found 2 items

      -rw-r--r-- 3 root hadoop 0 2015-03-16 06:55 /user/root/wordcountout/_SUCCESS

      -rw-r--r-- 3 root hadoop 16 2015-03-16 06:55 /user/root/wordcountout/part-r-00000

      其中我们单词计数的结果存储在part-r-00000这个文件中

    9. 可以cat一个这个part-r-00000文件,看一下单词计数的计数

      hadoop fs -cat /user/root/wordcountout/part-r-00000

      输出结果如下

      hello 4

      world 2

      图7:

      2015-03-16 16:40:14 的屏幕截图

    至此我们完成了一个小的mapreduce示例

    问题、心得与体会记录

    1. 体会1

      在Linux系统下操作Docker,比较简单,建议使用。

      (Linux下可能没有Windows系统下的boot2docker的各种问题,而且不需要借助CRT,直接开启多个终端)

      Docker的基本三个组件为镜像(只读),容器,仓库。在理解了这三个概念之后,对Docker的各种命令操作也就比较简单了

    2. 体会2

      在使用的Docker的过程中请注意:

      在敲入命令 docker start container_name后,便开启了容器。

      但此时还没有进入容器,进入容器的方法有多中,(网上博客有很详细的介绍)
      其中简单的一种:docker attach container_name

      当敲入此命令后,便进入这个容器,当你在此容器中敲入exit时,会终止容器,注意,只是终止了此容器,但是此容器还是存在的,终止并不意味这消亡(我就是在这里理解错了)。

      可以使用命令docker ps -a 查看当前正在运行或是停止的容器,你会看到还是可以看到该容器的,但是使用命令docker ps(查看当前正在运行的容器),你会发现该容器不存在在列表中。

      若要重启该容器,键入docker restart container_name 即可。

      (以上的命令中能直接使用container_name容器名直接操作,是在你已经使用为该镜像命名)

  • 相关阅读:
    js字符串数组['1','2','3']转number
    antd-vue中给table表格整行加点击事件
    vue中路由在新的标签页打开
    antd中的form表单 initialValue导致数据不更新问题
    vue中computed的作用以及用法
    gitlab新增ssh
    CentOS7安装配置ActiveMQ
    利用已有的缓存地图文件发布ArcGIS Server瓦片服务
    CentOS7上使用源码安装物联网大数据平台TDengine
    一些可以使用的在线地图服务
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/4573562.html
Copyright © 2011-2022 走看看