目录
1.写在前面
首先我们需要配置四台虚拟机,另外安装好jdk。然后我们在第一个节点node01下载了hadoop3.1.1版本,doc是hadoop的一个使用文档说明。
2.Hadoop三种安装模式
2.1.Hadoop单机模式
单机模式是Hadoop默认的安装模式,这种安装模式主要就是并不配置更多的配置文件,只是保守的去设置默认的几个配置文件中的初始化参数,它并不与其他节点进行交互,并且也不使用HDFS文件系统,它主要就是为了调试MapReduce程序而生。
2.2.Hadoop伪分布式安装模式
Hadoop伪分布式安装,需要配置5个常规的配置文件(XML),并且这里涉及到了NameNode和DataNode节点交互问题,而且NameNode和DataNode在同一个节点上,还需要配置互信。其实从严格意义上来讲,伪分布式集群,就已经可以称之为真正意义上的集群了,而且这里也包含了hdfs和MapReduce所有组件,只不过就是所有组件在同一个节点上而已。
2.3.Hadoop完全分布式安装模式
Hadoop完全分布式集群主要分为:常规Hadoop完全分布式集群和Hadoop HA集群(这里主要针对的是NameNode个数和NameNode的高可用保障机制而言)。由此可知较伪分布式集群而言,完全分布式集群,所有处理节点并不在同一个节点上,而是在多个节点上。
3.安装Hadoop3.1.1集群-伪分布式安装
3.1 软件需求
java必须安装(https://blog.csdn.net/Suyebiubiu/article/details/78585771)+实现ssh免秘钥登陆方式(https://blog.csdn.net/Suyebiubiu/article/details/108710223)
安装解压hadoop(node01)
我们下载tar.gz文件,将其解压在 /opt/sxt/ 文件夹下面:
(1)mv hadoop-3.1.1.tar.gz /opt/sxt/
(2)cd /opt/sxt/
(3)tar -zxvf hadoop-3.1.1.tar.gz
3.2 修改文件hadoop-en.sh
首先们进入该项目下面的 /etc/hadoop/文件夹,里面有各种各样的配置文件和脚本。
我们第一个修改的是hadoop-env.sh,这个文件修改环境变量,将来启动hadoop去找jdk命令。在hadoop3中,jdk路径也不是唯一需要配置的内容,hadoop3相比hadoop2,对于进程和角色之间关系做了严格的限定。
直接启动 vi hadoop-en.sh,找到末尾,需要引入jdk环境变量,写上角色和对应进程,目前是需要三个角色:1个namenode+2个datanode。(一共四个配置项)
3.3 修改core-site.xml(主节点信息)
直接启动 vi core-site.xml ,文件本身没有任何配置信息,需要手动填写进来。localhost修改为节点的别名,一般默认端口开启9820,修改临时目录。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9820</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/peseudo</value>
</property>
</configuration>
3.4 hdfs-site.xml(从节点信息)
直接启动 vi hdfs-site.xml ,replication代表的是副本的意思,副本保证了高可用。伪分布式安装副本数目不要超过1,因为角色和内容放在一个节点上,node01上有所有角色进程,包括副本,如果设置为2,表示相同内容副本都会放在node01上面,这个是hadoop不允许的。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:9868</value>
</property>
</configuration>
3.5 配置workers
直接写node01即可,伪分布式主从节点放在同一个服务器上面。
4.启动hadoop机器
进入集群安装地点hadoop-3.1.1目录,重点关注bin和sbin两个目录。bin和sbin下面有相关启动脚本。
没有配置环境变量,必须在bin这个目录下面才能使用bin下面的hdfs命令,启动 ./bin/hdfs namenode -format,会创建日志,格式化目录(我们上面写的peseudo文件夹)。
我们一层层打开这个文件夹,会发现clusterID,是唯一标识,我们集群的唯一标识,在全分布式中作用很大,每个机器共有一个clusterID,属于同一个集群。每一次format生成一个新的ID,所以多次format,所有进程不会同时跑起来,因为已经不在同一个进程之内了。forma作用就是生成clusterID和生成元数据信息,搭建系统开始执行一次就可以了。
这个时候集群已经格式化了,但是并不是启动了,我们需要再次进入部署包目录:
我们需要启动:./sbin/start-dfs.sh
5.查看角色进程
在node01一个节点将三个角色都跑起来了。
查看监听端口:ss -nal
可以看到 开了一个9870端口,hadoop3给我们提供一个更加友好的管理界面。如果打不开这个页面的话,很大可能是防火墙问题,可以执行下面两条命令解决:
-
systemctl stop firewalld.service //关闭服务
-
systemctl disable firewalld.service //禁止开机启动
6.上传文件
6.1 根目录下面创建temp文件夹
6.2 上传文件(put)
可视化可以查看被切成了几块?320M切成了三块,一个block是128M,一共有一个副本。每个块有自己的信息,放在了node01下面的自定义的/var/sxt/hadoop里面了,也就是元数据信息存放地址。