介绍
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
- Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
Hadoop的框架最核心的设计就是:
HDFS
和MapReduce
。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
Google的三篇论文
谈Hadoop的起源,了解一下google的三篇论文:
- Google FS ——> HDFS
GoogleFileSystem
这是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,提供容错功能。
- MapReduce
Mapreduce
是针对分布式并行计算的一套编程模型。
- BigTable ——> HBase
Bigtable
启发了无数的NoSQL数据库,比如:Cassandra、HBase等等。BigTable 是建立在 GFS 和 MapReduce 之上的。
官网
http://hadoop.apache.org/ 下载页:https://hadoop.apache.org/releases.html
上传安装包到Linux
安装Hadoop之前,要保证你的java环境是安装成功的
解压并进入到目录下
代码语言:javascript复制[root@hadoop101 software]# tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/[root@hadoop101 software]# ls /opt/module/hadoop-2.7.2 [root@hadoop101 software]# ls /opt/module/hadoop-2.7.2 $ cd /opt/module/hadoop-2.7.7/
配置JAVA_HOME 位置
代码语言:javascript复制在/opt/module/hadoop-2.7.2/etc/hadoop路径下配置hadoop-env.sh
(1)Linux系统中获取jdk的安装路径: [root@hadoop101 jdk1.8.0_144]# echo $JAVA_HOME /opt/module/jdk1.8.0_144
(2)修改hadoop-env.sh文件中JAVA_HOME 路径: [root@hadoop101 hadoop]# vi hadoop-env.sh 修改JAVA_HOME如下 export JAVA_HOME=/opt/module/jdk1.8.0_144
将hadoop添加到环境变量
代码语言:javascript复制 (1)获取hadoop安装路径: [root@ hadoop101 hadoop-2.7.2]# pwd /opt/module/hadoop-2.7.2
(2)打开/etc/profile文件: [root@ hadoop101 hadoop-2.7.2]# vi /etc/profile 在profie文件末尾添加jdk路径:(shitf g)
##HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
(4)让修改后的文件生效:. [root@ hadoop101 hadoop-2.7.2]# source /etc/profile (5)测试是否安装成功 [root@ hadoop101 hadoop-2.7.2]$ hadoop version Hadoop 2.7.2
运行Hadoop的三大模式之本地模式:
这是hadoop的默认运行模式,不需要启用单独进程,直接可以运行,一般用来测试和开发时使用。
运行官方grep案例
代码语言:javascript复制 1)创建在hadoop-2.7.7文件下面创建一个input文件夹 2)将hadoop的xml配置文件复制到input 3)执行share目录下的mapreduce程序 4)查看输出结果
代码示例:
代码语言:javascript复制[shaofei@hadoop128 hadoop-2.7.7]$ mkdir input[shaofei@hadoop128 hadoop-2.7.7]$ cp -r etc/hadoop/*.xml input/[shaofei@hadoop128 hadoop-2.7.7]$ ll input/[shaofei@hadoop128 hadoop-2.7.7]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input/ output 'dfs[a-z.] '[shaofei@hadoop128 hadoop-2.7.7]$ cat output/*
官方wordcount案例
代码语言:javascript复制1)创建在hadoop-2.7.7文件下面创建一个wcinput文件夹2)在wcinput文件下创建一个wc.input文件3)编辑wc.input文件4)回到hadoop目录/opt/module/hadoop-2.7.75)执行程序,统计单词出现的次数6)查看结果:
代码示例:
代码语言:javascript复制 [shaofei@hadoop128 hadoop-2.7.7]$ mkdir wcinput [shaofei@hadoop128 hadoop-2.7.7]$ vim wcinput/input.input
java java java hadoop hadoop python pyfysf upuptop java lll haha helloworld
:wq
[shaofei@hadoop128 hadoop-2.7.7]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount wcinput/ wcoutput
[shaofei@hadoop128 hadoop-2.7.7]$ cat wcoutput/*
hadoop 2 haha 1 helloworld 1 java 4 lll 1 pyfysf 1 python 1 upuptop 1