文章目录

  • 一、hadoop的简介
  • 二、hadoop的单机构建
  • 1.环境准备
  • 2.服务配置
  • 三、hadoop的集群构建
  • 1.三台机器构成一个集群
  • 2.给集群添加一个新节点
  • 3.使一个节点退役


一、hadoop的简介

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则为海量的数据提供了计算。

二、hadoop的单机构建

1.环境准备

官网说明:

http://hadoop.apache.org/docs/r3.0.3/hadoop-project-dist/hadoop-common/SingleCluster.html

需要获取两个安装包,hadoop及其运行所需的jdk环境
本机使用的版本是hadoop-3.0.3.tar.gz和jdk-8u181-linux-x64.tar.gz

useradd -u 1000 hadoop		
##让hadoop以普通用户的身份运行,之后的集群里每个节点上都应该有这个用户,并且uid相同
echo redhat | passwd --stdin hadoop

将软件包移动到普通用户的家目录下,以普通用户的身份解压操作

3 hadoop 数据块大小 hadoop数据存储_hadoop

2.服务配置

首先配置java环境(注意是在普通用户下操作)
vim ~/.bash_profile			##把java命令添加到环境变量里
source ~/.bash_profile

3 hadoop 数据块大小 hadoop数据存储_hdfs_02

在hadoop的环境变量里添加java路径
vim hadoop/etc/hadoop/hadoop-env.sh

3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_03


建立一个input目录

3 hadoop 数据块大小 hadoop数据存储_vim_04


执行命令输出output

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-\
3.0.3.jar grep input/ output 'dfs[a-z.]+'

3 hadoop 数据块大小 hadoop数据存储_vim_05


3 hadoop 数据块大小 hadoop数据存储_hdfs_06

修改配置文件,把本机加入hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim core-site.xml

3 hadoop 数据块大小 hadoop数据存储_vim_07

vim hdfs-site.xml

3 hadoop 数据块大小 hadoop数据存储_vim_08

vim workers
ssh-keygen		##与本机做好免密
ssh-copy-id localhost

3 hadoop 数据块大小 hadoop数据存储_hadoop_09

格式化
/home/hadoop/hadoop
bin/hdfs namenode -format

3 hadoop 数据块大小 hadoop数据存储_vim_10

##开启hdfs
sbin/start-dfs.sh
jps					##查看正在运行的java进程

3 hadoop 数据块大小 hadoop数据存储_vim_11

浏览器访问172.25.20.1:9870测试,并尝试给节点上传数据

3 hadoop 数据块大小 hadoop数据存储_vim_12


3 hadoop 数据块大小 hadoop数据存储_vim_13


3 hadoop 数据块大小 hadoop数据存储_hadoop_14

三、hadoop的集群构建

1.三台机器构成一个集群

首先在三台主机上安装nfs服务,并且把server2和server3上也创建hadoop这个普通用户
##三个节点上都要做的操作
useradd -u 1000 hadoop		##server2和server3上都操作
echo redhat | passwd --stdin hadoop
yum install nfs-utils -y
systemctl start rpcbind		##不开启的话无法共享数据

server1上的配置:
修改nfs的配置文件,把hadoop的家目录共享出去

vim /etc/exports
systemctl start nfs

3 hadoop 数据块大小 hadoop数据存储_hdfs_15


server2的配置:

把server1共享的家目录挂载到本地

3 hadoop 数据块大小 hadoop数据存储_hdfs_16


server3的配置与server2相同:

3 hadoop 数据块大小 hadoop数据存储_hadoop_17


server1配置文件的修改:

sbin/stop-dfs.sh		##添加节点时先停掉dfs服务
cd etc/hadoop/
vim workers				##把本机换成另外两个节点的ip

3 hadoop 数据块大小 hadoop数据存储_vim_18

vim hdfs-site.xml
/home/hadoop/hadoop/sbin/start-dfs.sh		##开启dfs服务

3 hadoop 数据块大小 hadoop数据存储_vim_19


3 hadoop 数据块大小 hadoop数据存储_hadoop_20


3 hadoop 数据块大小 hadoop数据存储_hdfs_21


3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_22


在浏览器上可以看到我们加入的节点状态

3 hadoop 数据块大小 hadoop数据存储_hadoop_23


3 hadoop 数据块大小 hadoop数据存储_vim_24


给集群中上传数据,看数据在两个数据节点上怎么保存

bin/hdfs dfs -put LICENSE.txt
##如果上传不成功且报错如下,那要解除安全模式
bin/hdfs dfsadmin -safemode leave
bin/hdfs dfs -put LICENSE.txt	##解除安全模式后再次上传

3 hadoop 数据块大小 hadoop数据存储_vim_25


3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_26

2.给集群添加一个新节点

新加入节点server4的配置:

yum install nfs-utils -y		##与server2,3相同
systemctl start rpcbind
showmount -e 172.25.20.1
useradd -u 1000 hadoop
echo redhat | passwd --stdin hadoop 
mount 172.25.20.1:/home/hadoop/ /home/hadoop/

3 hadoop 数据块大小 hadoop数据存储_hadoop_27

su - hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim workers			#把新节点的ip追加进去
/home/hadoop/hadoop/bin/hdfs --daemon start datanode	##把自己加载成datanode

3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_28


在浏览器上查看server4是否添加

3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_29

3.使一个节点退役

为了和添加的节点区分,我们让server3退役

首先在server1上进行配置:

在对应的路径中把要删除的节点ip或主机名写入文件

3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_30


编辑workers文件和dfs.hosts文件,两个文件的内容相同,将要留下的所有data node节点写入。

3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_31


按照官网的说明,编辑配置文件hdfs-site.xml,正确的写入两个文件的路径。

vim hdfs-site.xml

3 hadoop 数据块大小 hadoop数据存储_hdfs_32


3 hadoop 数据块大小 hadoop数据存储_3 hadoop 数据块大小_33


执行下面的命令 进行刷新

3 hadoop 数据块大小 hadoop数据存储_hadoop_34


刷新成功后在浏览器中查看,可以看到server3的状态为Decommission正在退役。

在被去除的节点上面停止datanode。bin/hdfs --daemon stop datanode

等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令

几分钟后,节点将从Decommissioned进入Dead状态。

然后再在浏览器中查看。server3节点则被移除。(但是我暂未成功)