一、概念讲解
1.Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
-
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
-
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
-
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
2.Hadoop的单机分布式/伪分布式/完全分布式模式的区别
-
1.单机(非分布式)模式
这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统,一般仅用于本地MR程序的调试 -
2.伪分布式运行模式
这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点: (NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode)
请注意分布式运行中的这几个结点的区别:
从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。一个机器上,既当namenode,又当datanode,或者说 既 是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。开启多个进程模拟完全分布式,但是并没有真正提高程序执行的效率 -
3.完全分布式模式
真正的分布式,由3个及以上的实体机或者虚拟机组件的机群。
二、hadoop单机版模式
1.创建hadoop用户并查看其id
[root@server1 ~]# useradd hadoop
[root@server1 ~]# id hadoop
2.将hadoop安装包移到/home/hadoop并切换到hadoop用户下查看
[root@server1 ~]# ls
[root@server1 ~]# mv * /home/hadoop
[root@server1 ~]# su - hadoop
[hadoop@server1 ~]$ ls
3.安装jdk安装包并做链接(为了方便)
[hadoop@server1 ~]$ tar zxf jdk-8u181-linux-x64.tar.gz
[hadoop@server1 ~]$ ls
[hadoop@server1 ~]$ ln -s jdk1.8.0_181/ java
4.安装hadoop安装包并做链接(为了方便)
[hadoop@server1 ~]$ tar zxf hadoop-3.0.3.tar.gz
[hadoop@server1 ~]$ ls
[hadoop@server1 ~]$ ln -s hadoop-3.0.3 hadoop
5.编辑hadoop中的中心配置文件,更改其环境变量
[hadoop@server1 ~]$ cd hadoop
[hadoop@server1 hadoop]$ ls
[hadoop@server1 hadoop]$ cd etc/
[hadoop@server1 etc]$ ls
[hadoop@server1 etc]$ cd hadoop/
[hadoop@server1 hadoop]$ vim hadoop-env.sh
文件中更改的内容如下:
54 export JAVA_HOME=/home/hadoop/java
6.配置java的环境变量,使其可以成功使用java中的命令,例如jps(查看java的进程)
[hadoop@server1 ~]$ vim .bash_profile
[hadoop@server1 ~]$ source .bash_profile
[hadoop@server1 ~]$ jps
配置文件中的内容如下:
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/java/bin