Hadoop核心项目提供了在低端硬件上构建云计算环境的基础服务,它也提供了运行在这个云中的软件所必须的API接口。Hadoop内核的两个基本部分是MapReduce框架,也就是云计算环境,和Hadoop分布式文件系统 (HDFS)。
Hadoop核心MapReduce框架需要一个共享文件系统, Hadoop核心框架通过专用的接口访问HDFS,云存储和S3等文件系统。
请注意,在Hadoop核心框架中,MapReduce常被称为mapred,HDFS经常被称为dfs。
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。
Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。
Map: 初始化数据的读入和转换,在此期间,框架对互不依赖的输入记录进行并行处理。
l
Reduce: 处理数据的组合和抽样,有关联的数据必须通过一个模块进行集中处理。
应用程序开发人员仅仅需要提供4项输入信息给Hadoop框架:读取和转换输入记录到键值对的作业类,一个Map方法,一个Reduce方法和一个转换键值对到输出记录的Reduce任务类。
在Hadoop核心框架中,MapReduce常被称为mapred,HDFS经常被称为dfs。
该框架提供了两个处理过程来管理MapReduce任务:
.
TaskTracker在集群中的计算节点上管理和执行各个Map和Reduce任务。
.
JobTracker接受作业提交,提供作业的监测和控制,管理任务,以及分配作业到TaskTracker节点上。
HDFS通过两个进程来完成的,
.
NameNode进行文件系统元数据的管理,它提供管理和控制服务。
.
DataNode提供数据块存储和查询服务。
Hadoop能够运行在任何流行的Linux操作系统上。我更喜欢Red Hat, Fedora和CentOS,因为他们使用红帽的包管理系统(RPM),
Hadoop可以在以下三个模式中运行:
本地模式:
没有守护进程会运行而且以其都运行在单个jvm上。独立模式适合于在开发过程中运行mapreduce程序,因为很容易测试和调试。
在一个特定的模式运行hadoop时,需要做两件事:设置适当的属性,并启动hadoop守护进程,
为了自动登录,可以用空字符生成一个新的ssh密匙:
ssh-keygen –t rsa –P ‘’ ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用以下这个测试:
ssh localhost
不输入密码就可以登录。
格式化hdfs:
hadoop namenode –format
开始守护进程:
start-dfs.sh
start-mapred.sh