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则为海量的数据提供了计算。
官网说明:
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
首先配置java环境(注意是在普通用户下操作)
vim ~/.bash_profile ##把java命令添加到环境变量里
source ~/.bash_profile
在hadoop的环境变量里添加java路径
vim hadoop/etc/hadoop/hadoop-env.sh
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-\
3.0.3.jar grep input/ output 'dfs[a-z.]+'
修改配置文件,把本机加入hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim core-site.xml
vim hdfs-site.xml
vim workers
ssh-keygen ##与本机做好免密
ssh-copy-id localhost
格式化
/home/hadoop/hadoop
bin/hdfs namenode -format
##开启hdfs
sbin/start-dfs.sh
jps ##查看正在运行的java进程
浏览器访问172.25.20.1:9870测试,并尝试给节点上传数据
首先在三台主机上安装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
server2的配置:
把server1共享的家目录挂载到本地
server3的配置与server2相同:
server1配置文件的修改:
sbin/stop-dfs.sh ##添加节点时先停掉dfs服务
cd etc/hadoop/
vim workers ##把本机换成另外两个节点的ip
vim hdfs-site.xml
/home/hadoop/hadoop/sbin/start-dfs.sh ##开启dfs服务
在浏览器上可以看到我们加入的节点状态
给集群中上传数据,看数据在两个数据节点上怎么保存
bin/hdfs dfs -put LICENSE.txt
##如果上传不成功且报错如下,那要解除安全模式
bin/hdfs dfsadmin -safemode leave
bin/hdfs dfs -put LICENSE.txt ##解除安全模式后再次上传
新加入节点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/
su - hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim workers #把新节点的ip追加进去
/home/hadoop/hadoop/bin/hdfs --daemon start datanode ##把自己加载成datanode
为了和添加的节点区分,我们让server3退役
首先在server1上进行配置:
在对应的路径中把要删除的节点ip或主机名写入文件
编辑workers文件和dfs.hosts文件,两个文件的内容相同,将要留下的所有data node节点写入。
按照官网的说明,编辑配置文件hdfs-site.xml,正确的写入两个文件的路径。
vim hdfs-site.xml
执行下面的命令 进行刷新
刷新成功后在浏览器中查看,可以看到server3的状态为Decommission正在退役。
在被去除的节点上面停止datanode。bin/hdfs --daemon stop datanode
等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令
几分钟后,节点将从Decommissioned进入Dead状态。
然后再在浏览器中查看。server3节点则被移除。(但是我暂未成功)