Hadoop入门

安装

  1. linux环境
  2. jdk(hadoop使用java写的)
  3. 配置hadoop

    • 下载hadoop,
      wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
    • vim conf/hadoop-env.sh
      row 9改为:
      export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/amd64
    • vim core-site.xml
      添加

      <property>
      <name>hadoop.tmp.dir</name> 
      <value>/tmp</value>
      </property> 
      <property>
      <name>dfs.name.dir</name>
      <value>/hadoop/name</value>
      </property>
      <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
      </property>
    • sudo vim hdfs-site.xml
      添加

      <property>
      <name>dfs.data.dir</name>
      <value>xxx/hadoop/data</value>
      </property>
    • sudo vim mapred-site.xml
      添加

      <property>
          <name>mapred.job.tracker</name>
          <value>localhost:9001</value>
      </property>
    • 需要修改hadoop所在文件夹的权限问题

HDFS

  1. 基本知识
    • hdfs的文件被分成块进行存储,hdfs的默认大小是64MB
    • hdfs有两类节点:NameNode和DataNode
    • NameNode是管理节点,存放文件的元数据
      * 文件与数据块的映射表
      * 数据块与数据节点的映射表
    • DataNode是工作节点,存放数据块
  2. 数据管理策略
    • 数据块副本.每个数据块3个副本,分不再两个机构内的三个节点
    • 心跳检测.DataNode定期向NameNode发送心跳消息
    • 二级NameNode.定期同步元数据映像文件和修改日子,NameNode发生故障时,备胎转正
  3. 文件的读写操作
    • 读取
      • 客户端发起文件读取请求;
      • NameNode返回元数据;
      • 客户端直接去DataNode读取Blocks
    • 写入
      • 文件拆分成块,通知NameNode
      • NameNode找到并返回DataNodes
      • 客户端写入DataNode的Blocks
      • 复制映像
      • 更新元数据
  4. HDFS的特点
    • 数据冗余,硬件容错
    • 流式的数据访问,写一次读多次,无法进行修改
    • 适合存储大文件
    • 适合数据批量读写,吞吐量高;不适合交互式应用(如数据库),低延迟很难满足;不支持并发写入
  5. HDFS的使用
    • hadoop namenode -format
    • start-all.sh
    • hadoop fs -ls / //显示文件系统
    • hadoop fs -mkdir xxx //创建目录
    • hadoop fs -put xxx path //传输文件到hadoop
    • hadoop fs -cat xxx
    • hadoop fs -get path xxx //下载文件
    • hadoop dfsadmin -report //查看文件系统所有信息

MapReduce 并行计算框架

  1. 原理

    分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)

  2. 基本概念
    • Job & Task. 一个Job分成多个Task,两类MapTask,ReduceTask.
    • JobTracker, 客户端添加任务给JobTracker,JT把任务分为Map和Reduce,交给MapTaskTracker和ReduceTaskTracker.通常和hdfs使用同一组节点
      • JobTracker的角色
        • 作业调度
        • 分配任务,监控任务执行进度
        • 监控TaskTracker的状态
      • TaskTracker的角色
        • 执行任务
        • 汇报任务状态
  3. MapReduce的作业执行过程

    • 任务到来,提交给JobTracker,分配Map任务和Reduce任务
    • 输入数据,进行分片
    • 把分片按照一定的规则分给TaskTracker,进行Map任务
    • 任务执行完之后,产生中间结果,key-value对
    • kv通过一定的规则进行交换,到达reduce任务(也是一些TaskTracker)
    • 运行玩之后,写回HDFS

    可以多轮执行;中间结果可以写入磁盘

  4. 容错机制
    • 重复执行,重试4次放弃
    • 推测执行

实例

  1. WordCount
    计算文件中每个单词的频数,输出结果按照字典序排序
    • 编译,WordCount.java为word_count_class/class
    • 打包,jar -cvf wordcount.jar *.class
    • 提交输入文件到hadoop
    • hadoop jar word_count_class/wordcount.jar WordCount input_wordcount(输入文件) output(输出文件)
    • 生成三个文件夹,运行状态,运行日志,运行结果
  2. 利用MapReduce进行排序
    • 分区
    • 小区间排序
    • 直接合并

注:源代码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值