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

xiaoxiao2021-02-28  82

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进行排序。

转载请注明原文地址: https://www.6miu.com/read-49419.html

最新回复(0)