本文原创,如需转载,请注明作者以及原文链接!
一、前期准备:
1、jdk安装 不要用centos7自带的openJDK
2、hostname 配置 配置位置:/etc/sysconfig/network文件
3、hosts 配置 配置位置 : /etc/hosts
4、date 配置 date -s "....."设置日期一致
5、 关闭安全机制 /etc/sysconfig/selinux
6、 关闭防火墙:firewall iptables off
7、映射文件更改 :windows 域名映射 /etc/hosts文件
本环境的搭建角色:主结点node01,从结点node02,、node03,、node04,第二主节点secondaryNameNode的位置:node02
密匙文件分发到从结点
分发命令举例:
[root@node01 hadoop-2.6.5]# scp id_dsa.pub node02:`pwd`/node01.pub
这些都设置好了之后才具备全分布式搭建的条件
二、环境搭建
节点: node01/02/03/04全分布分配方案:
NN SNN DN
NODE01 *
NODE02 * *
NODE03 *
NODE04 *
节点状态:
node01: 伪分布
node02/03/04 : ip配置完成
建立各节点通讯(hosts) 可以通过Ping 结点主机的别名来检查是否结点之间能够通讯成功
设置时间同步:date -s “xxxx-x-xx xx:xx:xx”
秘钥分发:
在每个节点上登录一下自己:产生.ssh目录 ------------------------具体的从新登陆代码:
从node01向node02/node03/node04分发公钥 (公钥的名称要变化)
scp id_dsa.pub node03:`pwd`/node06.pub ---------------------》要明白这里的主结点分发给从结点的公钥文件的名称为啥要变化,是为了如果有其他的结 点 也想要管理这个几点的话, 也会发公钥文件给从结点,如果不改名的话,第二个管理结 点的分发的公钥文件会覆盖掉第一个下发的公钥文件。
各节点把node01的公钥追加到认证文件里:
cat ~/node06.pub >> ~/.ssh/authorized_keys ----------------------》这样之后才会能够实现主结点到从结点的免密登录
node02/node03/node04安装jdk环境,node01分发profile给其他节点,并重读配置文件 :通过source 或者. /etc/profile的形式
分发hadoop部署程序2.6.5 到其他节点
copy node06 下的 hadoop 为 hadoop-local (管理脚本只会读取hadoop目录)
[root@node06 etc]# cp -r hadoop/ hadoop-pesudo --------------->作为分布式集群的备份目录,如果以后想要启动伪分布式集群的话,则可以将这个备份文件改名为hadoop
配置core-site.xml ---------------------》需要配置的是产生的dataNode、DataNode等结点的数据文件,如fsimage文件的位置
配置hdfs-site.xml ---------------------》配置从结点的个数和,第二主结点的位置,如可以将第二个主结点放到其他的某个从结点的位置 之上
配置slaves
分发sxt目录以及他一下的所有的内容及目录 到其他07,08,09节点 ----------------》这样做的好处就是,不用在其他的每个从结点上再去一一的建立一个相同的目录了
格式化集群:hdfs namenode -format ----------------->注意这里格式化完毕之后仅仅是产生一个头结点的数据文件,其他的服务器上 的从结点的数据文 件 和存放数据文件的目录是集群启动的时候才会产生的
至此集群搭建完毕!!!
三、集群启动
启动集群:start-dfs.sh
Jps 查看各节点进程启动情况
之后如果想要浏览器访问集群的话,需要查询集群和浏览器交互的端口号,一般是50070 ------------》ss -nal
浏览器成功的访问分布式存储系统
四、文件上传
- 上传文件到分布式存储系统
先创建一个用于上传的1.4M大小的文件
[root@node01 hadoop-2.6.5]# for i in `seq 100000`;do echo "hello sxt $i" >> test.txt;done
效果
具体的对于上传的文件的分割的大小可以做规定,一般的是默认128M每一块,我们可以通过以下的命令来设置
命令意义:将test.txt文件分割上传,并设置分割大小为1M,所以比如这个文件的总的大小是1.4M 的话,会分成两块
[root@node01 software]# hdfs dfs -D dfs.blocksize=1048576 -put test.txt
上传之后的效果
1)从浏览器上看
块1的存储效果
块2的存储效果
2)从xshell中看
输入命令
所在目录:存储有数据块的从结点的/var/sxt/hadoop/full/dfs/data/current/BP-1760625074-192.168.27.102-1569216123348/current路径下的文件,如下图
打开底层存储的文本文件test.txt 的blk_107341825的效果
block0
block1
集群停止:
[root@node01 dfs]# stop-dfs.sh