17-8-6周总结(hadoop笔记)

本文介绍了Hadoop的基本概念,包括其分布式存储与计算平台的特点、主从结构的设计、HDFS和MapReduce的工作原理。此外还详细说明了Hadoop伪分布式环境的搭建步骤,以及HDFS的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概念

  Hadoop是适合大数据的分布式存储与计算平台。HDFS(Hadoop Distributed File System)分布式文件系统;MapReduce 并行计算框架。
  主从结构:主节点,只有一个,namenode;从节点,有很多个,datanodes。
MapReduce的架构:
  主从结构:主节点,只有一个,jobTracker;从节点,有很多个,TaskTrackers;
  JobTracker负责:接受客户提交的计算任务;把计算任务分给TaskTracker执行,监控TaskTracker的执行情况。
  TaskTracker:执行JobTracker分配的计算任务。
HDFS的框架:
  namenode负责:接受用户操作请求;维护文件系统的目录结构;管理文件与block之间关系,block与data。
  datanode负责:存储文件;文件被分成block存储在磁盘上;为保证数据安全,文件会有多个副本。

2、配置

2.1 主机(windows)与客户机(安装在虚拟机中的linux)网络连接方式
2.1.1 host-only 宿主机与客户机单独组网。
  好处:网络隔离
  坏处:虚拟机与其他服务器之间不能通信
2.1.2 bridge 客户机与宿主机在同一个局域网中
  好处:都在同一个局域网,可以互相访问
  坏处:不安全
2.2 hadoop的伪分布式安装步骤
【使用root用户登录】
2.2.1 设置静态ip
  在centos桌面右上角的图标上,右键修改
  重启网卡,执行命令service network restart
  验证:执行命令ifconfig
2.2.2 修改主机名
  修改当前会话中的主机名,执行命令hosthome hadoop
  修改配置文件中的主机名,执行命令vi /etc/sysconfig/network
  验证:重启机器
2.2.3 把hosthome和ip绑定
  执行命令vi /etc/hosts ,增加一行内容,如下
  192.168.80.100 hadoop
  保存退出
  验证 ping hadoop
2.2.4 关闭防火墙
  service iptables stop
  service iptables status
2.2.5 关闭防火墙的自动运行
  执行命令 cnkconfig iptables off
  验证 cnkconfig –list | grep iptables
2.2.6 SSH(secure shell )的免密码登陆
  执行命令 ssh-keygen -t rsa产生迷钥,位于~/.ssh
  执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  验证:ssh localhost
2.2.7 安装jdk
  执行命令 rm -rf /usr/local/* 删除所有内容
  使用winscp把jdk文件从windows复制到/usr/local目录下
  执行命令 chmod u+x jdk-6u24-linux-i586.bin赋予执行权限
  执行命令 ./jdk-6u24-linux-i586.bin 解压缩
  执行命令 mv jdk1.6.0_24 jdk 重命名
  vi /etc/profile
  export JAVA_HOME=/usr/local/jdk
  export PATH=.:$JAVA_HOME/bin:$PATH
  保存退出
  source /etc/profile
  验证 java -version
2.2.8安装hadoop
  执行命令 tar -zxvf hadoop-1.1.2.tar.gz
  执行命令 mv hadoop-1.1.2 hadoop 重命名
  执行命令 vi /etc/profile 设置环境变量
  Export HADOOP_HOME=/usr/local/hadoop
  Export PATH=.:$HADOOP_HOME/bin
  保存退出
  执行命令 Source /etc/profile
  修改hadoop的配置文件,位于\$HADOOP_HOME/conf目录下:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapered-site.xml
2.2.9 NameNode进程没有启动成功?
  -没有格式化
  -配置文件只copy,不修改
  -hostname与ip没有绑定
  -SSH的免密码登陆没有配置成功
2.3 多次格式化hadoop也是错误的
  删除/usr/local/hadoop/tmp文件夹,重新格式化

3、HDFS

3.1 Namenode
  是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件的数据块列表。接收用户的操作请求。
  文件包括:
  fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
  edits:操作日志文件。
  fstime:保存最近一次checkpoint的时间
  以上这些文件是保存在linux的文件系统中

3.2 SecondaryNameNode
  HA的一个解决方案。但不支持热备。配置即可。
  执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits。
  默认在安装在NameNode节点上,但这样不安全。

3.3 对hdfs的操作方式:hadoop fs xxx
  hadoop fs -ls / 查看hdfs的根目录下的内容的
  hadoop fs -lsr / 递归查看hdfs的根目录下的内容的
  hadoop fs -mkdir /dl 在hdfs上创建文件夹d1
  hadoop fs -put < linux source> < hdfs destination> 把数据从linux上传到hdfs的特定路径上
  hadoop fs -get < hdfs source> < linux destination> 把数据从hdfs下载到linux的特定路径下
  hadoop fs -text < hdfs文件> 查看hdfs中的文件
  hadoop fs -rm 删除hdfs中文件
  hadoop fs -rmr 删除hdfs中的文件夹
  hadoop fs -ls hdfs://hadoop0:9000/

3.4 DataNode
  提供真实文件数据的存储服务
  文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是64MB,以一个256MB文件,共有256/64=4个Block.
  不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间
Replication。多副本,默认是三个。

3.5 HDFS的datanode在存储数据时,如果原始文件大小>64MB,按照64MB大小划分;如果<64MB,只有一个block,占用磁盘空间是源文件实际文件大小。

3.6 RPC(remote procedure call)
  不同java进程间的对象方法的调用。
  一方称作服务端(server),一方称作客户端(client)。server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在服务端。
  RPC是hadoop框架运行的基础。

4、MapReduce工作原理

  MapReduce是一种编程模式,用于大规模数据集(大于1TB)的并行运算。Map(映射)和Reduce(化简)的概念和主要思想,是从函数式编程语言借用来的,还有从矢量编程语言里借来的特性。
  在函数式编程中,map函数对列表的每个元素执行操作或函数。执行这些函数时,原有列表不会被修改。函数式编程认为,应当保持数据不可变,避免在多个进程或线程间共享数据。这意味着演示的map函数虽简单,却可以通过两个或更多线程在同一列表上用时执行,线程之间互不影响,因为列表本身没有改变。
  在函数式Map和Reduce设置中,map函数针对每一个输入元素都要生成一个输出元素,reduce函数针对每一个输入列表都要生成一个输出元素。在MapReduce中,每一个阶段都可以生成任意的数值;Mapper可能把一个输入Map为0个、1个或100个输出。Reducer可能计算超过一个的输入列表并生成一个或多个不同的输出。
  reduce函数的作用是把大的数值列表转变为一个(或几个)输出数值。在MapReduce中,所有的输出值一般不会被Reduce在一起,除非设置Reduce的个数为1。但是有相同键的所有数值会被一起送到一个reduce函数里处理。作用在有着不同键关联的数值列表上的Reduce操作之间是独立执行的。
  用户定义一个map函数来处理一个key-value对以生成一批中间的Key-Value对,再定义一个reduce函数将所有这些中间的有相同Key的Value合并起来。
  MapReduce的核心过程——shuffle和sort。shuffle是指从Map的输出开始,包括系统执行排序以及传送Map输出到Reduce作为输入的过程。Sort阶段就是对Map端输出的Key进行排序。
  reduce函数的输入是已分类的map函数的输出。在shuffle阶段,框架通过HTTP取出所有Map输出的结果。由于不同的Map可能输出相同的Key,在这个阶段,框架将Reduce的输入通过Key分成组。相同的Key发送到同一个Reduce端处理。Sort阶段就是对Map端输出的Key进行排序。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值