概念
Hadoop,一种分析和处理大数据的软件平台。是Appach的一个用JAVA语言实现的开源软件的加框,在大量计算机组成的集群中实现了对于海量数据进行的分布式计算。
Hadoop的框架核心设计是:HDFS和MapReduce.HDFS为海量数据提供了存储,则MapReduce为海量数据提供了计算。
关于HDFS分布式文件系统
用于数据的存储
大文件被分成多块,以冗余镜像的方式分布在不同的机器中。
关于MapReduce
Hadoop为每个input split创建一个task调用Map计算,task计算input中的每个记录,然后Map将结果以key-value形式输出。按照key值将结果整理交给Reduce,Reduce输出结果。保存在HDFS。
Hadoop集群组成
NameNode
- 文件如何拆分
- 被拆分部分都存储在哪些DataNode节点
- 文件系统运行的状态信息(从DataNode接受心跳信号,管理节点工作状态)
Secondary NameNode
- 帮助NameNode收集文件系统运行的状态信息
JobTracker
- 当有任务提交到Hadoop集群的时候负责Job的运行,负责调度多个TaskTracker
TaskTracker
- 负责某一个map或者reduce任务.
数据处理流程:
数据文件被分割,分割块以冗余镜像的方式下放到DataNode上。分割方法及分割后文件块的去向记录在NameNode中,有计算任务提交时,JobTracker调度TaskTracker执行计算任务。
Secondary NameNode收集文件系统运行的状态信息。
1.下载安装Hadoop的发行版
下载 http://hadoop.apache.org/releases.html
解压
2.配置java环境
$ cd hadoop-2.8.2/etc/hadoop
修改hadoop-env.sh文件中的jdk路径为:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/
修改后执行:
bin/hadoop version
显示版本信息,安装成功
单机模式的操作方法
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ cp ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar .
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*