1.Hadoop分布式文件系统(HDFS)

  • HDFS基于GFS(Google File System),能够存储海量的数据,并且使用分布式网络客户端透明访问。
  • HDFS中将文件拆分成特定大小的块结构(block-structured filesystem),一个文件的不同块存储在不同的节点中。
  • 为了防止数据丢失,HDFS默认将一个块重复保存3份。
  • HDFS的架构主要包括两个部分:NameNode和DataNode。
  • NameNode保存整个文件系统的基础信息,例如:文件名,文件权限,文件每个块的存储位置等。为了能够快速访问获取信息,NameNode将这些基础信息保存在内存中。
  • DataNodes是那些保存块(blocks)的机器,通常由大容量存储空间的廉价机器充当。

hadoop中常用文件操作命令

  • hdfs dfs -ls / (列出HDFS根目录的文件信息)

  • hdfs dfs -mkdir /user (在HDFS中创建目录)

  • hdfs dfs -put INPUT_PATH OUTPUT_PATH

  • hdfs dfs -cat

  • hdfs dfs -get

  • hadoop fs,hadoop dfs和hdfs dfs命令的区别:fs既能操作本地文件又能操作分布式文件系统,而dfs只能操作HDFS分布式文件系统。hadoop dfs已经废弃

2.MapReduce with Python

  • MapReduce是一种编程模型,用它来将大量的数据计算任务划分成并行的独立的小任务。
  • MapReduce框架主要包括3个阶段:map, shuffle and sort, and reduce(映射,混合和排序,规约)
  • Map阶段:maper函数分别处理系列键值对,产生零个或多个新的键值对。



  • shuffle and sort:利用基于哈希的分割器给每确定每个键值对对于的reducer,并且进行排序。
  • Reduce阶段:利用reduce函数,将多个map阶段输出的键值对按照键对值进行合并,然后输出新的键值对。

  • Hadoop streaming:maper和reducer都是按照一行一行的顺序从标准输入(stdin)读取数据,然后进行标准输出,maper的输出值为多个键值对,每个键值对用制表符(tab)分开。

3.Hadoop streaming

  • Hadoop Streaming工具的最大的好处是:能够让任何语言编写的map, reduce程序能够在hadoop集群上运行;map/reduce程序只要遵循从标准输入stdin读,写出到标准输出stdout即可。

  • 另外一个方便之处就是:需要编写的map和reduce程序容易进行单机调试,通过管道前后相接的方式就可以模拟streaming, 在本地完成map/reduce程序的调试。

  • 最后,streaming工具提供了丰富的参数来灵活控制作业的过程。

  • map/reduce作业是由一些可执行文件或脚本文件充当mapper或者reducer。

    例如:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper /bin/cat \
-reducer /bin/wc

任何可执行文件都可以被指定为mapper/reducer。这些可执行文件不需要事先存放在集群上; 如果在集群上还没有,则需要用-file选项让framework把可执行文件作为作业的一部分,一起打包提交。

例如:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper myPythonScript.py \
-reducer /bin/wc \
-file myPythonScript.py

hadoop 日常使用记录的更多相关文章

  1. Hadoop运维记录系列

    http://slaytanic.blog.51cto.com/2057708/1038676 Hadoop运维记录系列(一) Hadoop运维记录系列(二) Hadoop运维记录系列(三) Hado ...

  2. 日常问题记录-- java.lang.IllegalArgumentException: taglib definition not consistent with specification version

    转自:https://www.cnblogs.com/carterzhang/p/4288650.html 背景: tomcat8.0中使用taglib 错误表现: java.lang.Illegal ...

  3. hadoop日常运维与升级总结

    日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...

  4. hadoop安装问题记录

    start-yarn.sh 启动正常,但是无法访问网页http://localhost:8088/cluster 原因: 可能是ipv6 的问题 解决方法: http://stackoverflow. ...

  5. hadoop 安装过程记录

    1)首先配置好了四个linux虚拟机 root pwd:z****l*3 关闭了防火墙 开通了 sshd服务 开通了 ftp服务 配置了 jdk 1.8 配置好了互信 (之前配置的过程忘了!--检查了 ...

  6. Hadoop学习问题记录之基础篇

    目的 记录学习hadoop过程中遇到的基础问题,无关大小.无关困扰时间长短. 问题一 全分布式环境中运行mapred程序,报异常:java.net.NoRouteToHostException: 没有 ...

  7. 【日常操作记录】Asp.Net Core 的一些基本操作或属性

    用于记录在项目中使用到的方法.属性.操作,持续更新中 静态文件的使用 在项目中静态文件的使用需要在Startup中的Configure方法中增加: //使用静态文件 app.UseStaticFile ...

  8. Hadoop日常维护系列——Hadoop添加删除节点

    添加节点 1.修改host    和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves    添加新增节点的ip或host 3.在新节点的 ...

  9. Mac OS X Yosemite安装Hadoop 2.6记录

    整个安装过程分为四部分: 一.  安装Homebrew 二.  ssh localhost 三. 安装Hadoop已经进行配置文件设置 (伪分布式) 四. 执行栗子 一. 安装Homebrew 採用H ...

随机推荐

  1. vue设置选中时的样式名称

    第一种方式:在router中全局设置 export default new Router({ mode:'history', linkActiveClass:'index', routes: [ { ...

  2. Android Gradle脚本从Groovy迁移到Kotlin DSL

    Android Gradle从Groovy迁移到Kotlin Android项目用Gradle构建, 其脚本语言之前是Groovy, 目前也提供了Kotlin的支持, 所以可以迁移到Kotlin. 官 ...

  3. APP开通支付宝支付 转账功能

    注意:支付宝单笔转账到账户功能的准入条件 首先要在商家中心注册,从商家中心可以跳转到开放平台. 登陆蚂蚁金服开放平台 1 开发中心->网页&移动应用 2 根据需求选择应用类型创建应用 3 ...

  4. Asp.Net Core Identity 隐私数据保护

    前言 Asp.Net Core Identity 是 Asp.Net Core 的重要组成部分,他为 Asp.Net Core 甚至其他 .Net Core 应用程序提供了一个简单易用且易于扩展的基础 ...

  5. 一文带你看清HTTP所有概念

    上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的 ...

  6. C++ 链式继承下的虚函数列表

    目录 1.虚函数列表的位置 2.虚函数列表的内容 3.链式继承中虚函数列表的内容   注: 虚函数列表 又称为虚表, vtbl , 指向它的指针称为vptr, vs2019中称为__vfptr 操作系 ...

  7. kubernetes concepts -- Pod Lifecycle

    Pod Lifecycle This page describes the lifecycle of a Pod. Pod phase A Pod’s status field is a PodSta ...

  8. 【java面试】线程篇

    1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位. 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任 ...

  9. Linux起源

    Linux起源 操作系统出现时间线: Unix1970年诞生 ,71年用C语言重写 Apple II 诞生于1976年 window诞生于1985年 Linux诞生于1991年,由大学生Linus T ...

  10. Java&Eclipse&Maven的折腾

    趁着寒假对于Java的余热,继续了对Java的征途.这次并没有太多琐碎的事情打断我的学习,于是借着这股热情去图书馆借了两本国外的书(中译版),对于程序的爱好一定要坚持下来,才开通了这个博客以坚持学习.