Hadoop学习笔记
1、Hadoop是什么?
Apache Hadoop软件库是一个框架,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop被设计成能够从单台服务器扩展到数以千计的服务器,每台服务器都有本地的计算和存储资源。Hadoop的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务。
2、Hadoop能干什么?
Hadoop擅长日志分析,海量数据的存储;
3、Hadoop核心
HDFS:HadoopDistributed File System分布式文件系统;
MapReduce:并行计算框架;
4、 HDFS的架构
主从结构:
主节点:只有一个:namenode
从节点:有很多个:datanode
namenode负责:
接收用户操作请求
维护文件系统的目录结构
管理文件已block之间关系,block与datanode之间关系
datanode负责
存储文件
文件被分为block存储在磁盘上
为保证数据安全,文件会有多个副本
5、 MapReduce的架构
主从结构:
主节点:只有一个:JobTracker
从节点:有很多个:TaskTrackers
JobTrack负责:
接收客户提交的计算任务
把计算任务分给TaskTrackers执行
监控TaskTracker的执行情况
TaskTrackers负责:
执行JobTracker分配的计划任务
6、 Hadoop的特点
Ø 扩容能力:能可靠地存储和处理千兆字节数据;
Ø 成本低:可以通过普通的机器组成服务器群来分发以及处理数据;
Ø 高效率:通过分发数据,hadoop可以在数据所在的节点上并行的处理它们,这使得处理非常的快速;
Ø 可靠性:hadoop能自动地维护数据的多副本性,并且在任务失败后能自动地重新部署计算任务;
7、 Hadoop集群的物理分布
8、 单节点物理结构
9、 Hadoop部署方式
本地模式
伪分布模式
集群模式
10、伪分布式安装步骤
关闭防火墙
修改ip
修改hostname
设置ssh自动登录
安装jdk
安装hadoop
11、修改hadoop配置文件
一共四个
hadoop-env.sh:配置JAVA_HOME
exportJAVA_HOME=/usr/local/jdk
core-site.xml:指定namenode的地址
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://ip地址:9000</value>
</property>
<!--指定hadoop运行时产生的文件的位置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-1.1.2/tmp</value>
</property>
</configuration>
hdfs-site.xml:指定HDFS副本的数量
<configuration>
<!--指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml:主要配置JobTracker的address
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>ip地址:9001</value>
</property>
</configuration>
12、格式化并启动hadoop(都要在hadoop的bin目录下执行)
格式化:hadoop namenode –format
启动:执行start-all.sh
13、Hadoop命令
相对路径 . .. ~
目录跳转 cd xxx
创建文件 touch
查看文件 more、cat
查看目录 ls –alR
创建目录 mkdir -p
复制文件 cp
删除文件 rm –r xxx
修改文件权限 chmod –R 700
修改文件(夹)的所有者 chown –R root:root xxx
查看文件属性 stat
解压缩文件 tar –xzvf xxx
修改密码 passwd xxx
查看磁盘空间 df -ah
查看进程 ps -ef |grep
杀掉进程 kill -9
修改环境变量 vi /etc/profile
修改主机名 vi /etc/sysconfig/network
vi /etc/hosts
修改ip地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0
关闭防火墙 service iptables stop chkconfig iptables off
关闭selinux setenforce permissive修改/etc/selinux/config
14、DistributedFile System
数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。
是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。
通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般。
容错。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。
分布式文件管理系统很多,hdfs只是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。
15、HDFS详解
HDFS基本特点:整个集群有单一的命名空间。数据一致性。文件被分成多个文件块,每个文件块被分配存储到数据节点上,可能会有复制来保证数据安全。
HDFS是一个主/从(master/slave)结构:在master上只运行一个Namenode,而在每一个slave上运行一个Datanode。Namenode管理着整个分布式文件系统,对文件系统的操作(建立、删除文件)都是通过Namenode来控制。datanode管理连接点的存储,将Block存储在本地文件系统中保存block的meta-data,同时周期性的将所有存在的block信息发送给namenode(心跳检测);
16、文件写入和读取
写入:
1、Client向NameNode发起文件写入的请求。
2、NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
3、Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
读取:
1、 Client向Namenode发送文件读取的请求。
2、 Namenode返回文件存储的DataNode的信息。
3、 Client读取文件信息。
17、Hadoop进程
hadoop启动后会有5个守护进程:namenode、secondarynamenode、datanode、jobtracker、tasktracker。secondarynamenode,它不是namenode 的冗余守护进程,而是提供周期检查点和清理任务。在每个Hadoop集群中可以找到一个 namenode和一个 secondarynamenode。每个集群有一个jobtracker,它负责调度datanode 上的工作。每个datanode 有一个tasktracker,它们执行实际工作。jobtracker和tasktracker 采用主-从形式,jobtracker跨 datanode分发工作,而tasktracker 执行任务。jobtracker还检查请求的工作,如果一个datanode 由于某种原因失败,jobtracker会重新调度以前的任务。
分布情况是:主节点包括名称节点、从属名称节点和jobtracker 守护进程(即所谓的主守护进程)。从节点包括tasktracker 和数据节点(从属守护进程)。两种设置的不同之处在于,主节点包括提供Hadoop 集群管理和协调的守护进程,而从节点包括实现Hadoop 文件系统(HDFS)存储功能和MapReduce功能(数据处理功能)的守护进程。