hadoop简介
hadoop主要是解决海量数据的存储和海量数据的分析计算问题,狭义上来说,hadoop最擅长做海量离线的日志分析;广义上来说,hadoop还是指一个更加广泛的概念--hadoop生态圈。
hadoop 核心
HDFS:分布式文件系统
YARN:资源管理调度系统
Mapreduce:分布式运算框架
hadoop有三个发行版本:Apache、Cloudrea、Hortonworks。
Apache 版本最原始(最基础)的版本,对于入门学习最好。
Cloudera 在大型互联网企业中用的较多。
Hortonworks 文档较好。
选择hadoop的优势(4高)
- 高可靠性: Hadoop底层维护多个数据副本, 所以即使Hadoop某个计算元素或存储出现故障, 也不会导致数据的丢失。
- 高扩展性:在集群间分配任务数据, 可方便的扩展数以千计的节点。
- 高效性:在MapReduce的思想下, Hadoop是并行工作的, 以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配。
Hadoop1.x和Hadoop2.x区别
如图,在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度, 耦合性较大, 在Hadoop2.x时代, 增加了Yarn。 Yarn只负责资源的调度,MapReduce只负责运算。
HDFS架构
-
NameNode( nn) :存储文件的元数据, 如文件名, 文件目录结构, 文件属性( 生成时间、 副本数、文件权限) , 以及每个文件的块列表和块所在的DataNode等。
-
DataNode(dn):在本地文件系统存储文件块数据, 以及块数据的校验和。
(上面四幅图片是对NameNode和DataNode最形象的比喻,我们可以把NameNode看作是文件的目录,而DataNode是文件的内容)
- Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序, 每隔一段时间获取HDFS元数据的快照。
MapReduce 架构
MapReduce 将计算过程分为两个阶段: Map 和 Reduce。其中
1) Map 阶段并行处理输入数据
2) Reduce 阶段对 Map 结果进行汇总
如下图所示的两个阶段:
hadoop运行环境搭建
1. 安装对应版本的JDK
由于hadoop是安装的最新版本的3.2.0版本,所以JDK选择的是1.8.0版本,这个版本一定要注意,安装之前google一下,否则后边会出现很多问题。
首先官网下载对应版本的JDK,我是下载到了Downloads目录下,然后解压到opt/jvm目录下(jvm是新建的文件夹,解压好的文件都放到了这个文件夹中),命令如下:
sudo tar zxvf jdk-8u211-linux-x64.tar.gz -C /opt/jvm
2. 配置JDK的环境变量
切换到JDK所在目录,运行如下命令:
dreamgeng at dreamgeng-ubuntu in ~
$ cd /opt/jvm/jdk1.8.0_211 #切换目录
dreamgeng at dreamgeng-ubuntu in /opt/jvm/jdk1.8.0_211
$ pwd
/opt/jvm/jdk1.8.0_211 # pwd获得JDK路径
dreamgeng at dreamgeng-ubuntu in /opt/jvm/jdk1.8.0_211
$ sudo vi /etc/profile # vim编辑/etc/profile文件,将JDK 的路径添加进去
在 profile 文件末尾添加 JDK 路径
在 profile 文件末尾添加 JDK 路径
#JAVA_HOME
export JAVA_HOME=/opt/jvm/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin
让修改后的文件生效
dreamgeng at dreamgeng-ubuntu in /opt/jvm/jdk1.8.0_211
$ sudo -s source /etc/profile # 这里加了-s,网上很多教程是没有的,但是如果不加会提示找不到source命令的错误
到这里jdk就安装完成了。
3. 安装 Hadoop
首先官网下载3.2.0最新版本的hadoop,均下载.tar.gz 版本的,然后和安装jdk一样,将其解压到opt/jvm目录下,这里不再重复。
4. 将 Hadoop 添加到环境变量
dreamgeng at dreamgeng-ubuntu in /opt/jvm
$ cd hadoop-3.2.0
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ pwd
/opt/jvm/hadoop-3.2.0
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ sudo vi /etc/profile
将如下内容添加到/etc/profile文件中
##HADOOP_HOME
export HADOOP_HOME=/opt/jvm/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
保存后退出
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ sudo -s source /etc/profile # 激活
如果 Hadoop 命令不能用,则需要重启
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ sync
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ sudo reboot
输入ll可查看Hadoop 目录结构
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0
$ ll
total 228K
drwxr-xr-x 3 dreamgeng 1002 4.0K Jul 7 20:12 bin
drwxrwxr-x 3 dreamgeng dreamgeng 4.0K Jul 8 10:54 data
drwxr-xr-x 3 dreamgeng 1002 4.0K Jan 8 14:13 etc
drwxr-xr-x 2 dreamgeng 1002 4.0K Jan 8 15:59 include
drwxrwxr-x 2 dreamgeng dreamgeng 4.0K Jul 8 08:47 input
drwxr-xr-x 3 dreamgeng 1002 4.0K Jan 8 15:58 lib
drwxr-xr-x 4 dreamgeng 1002 4.0K Jan 8 15:59 libexec
-rw-rw-r-- 1 dreamgeng 1002 148K Oct 19 2018 LICENSE.txt
drwxr-xr-x 2 dreamgeng root 4.0K Jul 8 16:00 logs
-rw-rw-r-- 1 dreamgeng 1002 22K Oct 19 2018 NOTICE.txt
drwxr-xr-x 2 dreamgeng dreamgeng 4.0K Jul 8 09:12 output
-rw-rw-r-- 1 dreamgeng 1002 1.4K Oct 19 2018 README.txt
drwxr-xr-x 3 dreamgeng 1002 4.0K Jan 8 14:13 sbin
drwxr-xr-x 4 dreamgeng 1002 4.0K Jan 8 16:32 share
drwxrwxr-x 2 dreamgeng dreamgeng 4.0K Jul 8 09:39 wcinput
drwxr-xr-x 2 dreamgeng dreamgeng 4.0K Jul 8 09:47 wcoutput
其中重要目录:
( 1) bin 目录:存放对 Hadoop 相关服务( HDFS,YARN)进行操作的脚本
( 2) etc 目录: Hadoop 的配置文件目录,存放 Hadoop 的配置文件
( 3) lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
( 4) sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
( 5) share 目录:存放 Hadoop 的依赖 jar 包、 文档、 和官方案例