一、环境及软件说明
1、虚拟机软件:
2、系统镜像:
3、JDK:
jdk-8u121-linux-x64.rpm
4、hadoop安装包:
hadoop-2.7.3.tar.gz
二、安装系统环境
1、安装virtualBox
完成后会在电脑产生一块虚拟网卡:VirtualBox Host-Only Network,其默认地址为192.168.56.1 ,此次安装将会基于VirtaulBox的Host-Only网络模式。
2、安装Centos7 系统
按照网络教程安装。注意,这里在安装时,“软件选择” 以 “基础设施服务器”的模式安装。安装完成后,将当前系统IP设置为192.168.56.200,并开启ssh服务。
三、配置基础环境
1、安装配置JAVA环境
1)上传jdk-8u121-linux-x64.rpm到root用户根目录
2)执行rpm -ivh jdk-8u121-linux-x64.rpm命令进行jdk解压安装,会默认安装在/usr/java/目录下。
3) 编辑/etc/profile文件,配置JAVA_HOME、PATH、CLASSPATH,保存后执行source /etc/profile命令是java环境变量配置生效。
2、修改Hostname
1)在centos7环境下,执行hostnamectl set-hostname master命令,将主机名称设置为master(重新登陆后生效)。
2)编辑/etc/hosts/文件,预先添加slave1、slave2、slave3
3、配置Hadoop
1)创建Hadoop用户及用户组,并授予执行命令的权限
添加用户组:groupadd hadoop
添加用户:useradd hadoop -g hadoop
设置密码:passwd hadoop
2)以hadoop用户登录,并将hadoop-2.7.3.tar.gz上传至用户根目录解压。变更目录名称为hadoop
3)修改/home/hadoop/hadoop/etc/hadoop/hadoop-env.sh, 配置java环境
4)修改/home/hadoop/hadoop/etc/hadoop/core-site.xml及hdfs-site.xml文件,保存完成后执行hdfs namenode -format格式化hdfs。
5)以root用户登陆,编辑/etc/profile文件,配置HADOOP_HOME并更新PATH变量,然后执行source /etc/profile使之生效。可执行hadoop命令查看最终效果。
四、配置伪分布式集群
1、物理及逻辑架构
伪分布式模式是在一台单机上运行,没有所谓的在多台机器上进行真正的分布式计算,但用不同的Java进程模仿分布式运行中的各类结点(NameNode,DataNode,SecondaryNameNode)。
2、配置伪分布式环境
1) 复制上一步镜像为新的镜像,名称单节点集群,并启动。
2)修改设备ip为192.168.56.100
执行systemctl restart network 命令使修改生效,执行ifconfig命令显示修改后的ip信息:
3)修改hostname为singlenodecluster,修改完成后重新登陆用户生效。
4)使用SSH远程工具、hadoop用户远程登陆singlenodecluster设备
5)修改hadoop配置文件core-site.xml
fs.defaultFS设置集群中NameNode结点的URI;
hadoop.tmp.dir设置默认存储目录为持久化目录。(若hdfs-site.xml中不配置dfs.namenode.name.dir 或者dfs.datanode.data.dir,则默认存储在此目录)
6) 修改hadoop hdfs配置文件hdfs-site.xml
dfs.replication ,修改默认存储副本数量为1。
7)执行hdfs namenode -format格式化hdfs
8)清空slaves配置文件内容(之前制作镜像预留,此处需删除)
9) start-dfs.sh 启动集群(此处已做了ssh免密登陆,不需要输入密码。否则会提示输入密码)
执行jps命令可查看当前运行的业务模块,发现NameNode、Datanode、SecondaryNameNode都已启动成功。
10)传输文件校验
执行hdfs dfs -ls /命令 可查看到当前hdfs根目录下已有一个文件(早先试验上传),此处我们在上传一个文件。(同名文件在统一目录下只能存在一份)
执行 hdfs dfs -put 本地文件名称 /可将本地硬盘文件上传到HDFS根目录。红线部分标识上传成功。
五、配置完全分布式集群
1、复制虚拟系统
依照以上分别复制出slave1、slave2、slave3,并分别修改对应IP和host那么为
192.168.56.201 slave1 ;192.168.56.202 slave2 ;192.168.56.203 slave3 .
2、配置免密登陆
hadoop用户登陆master,执行ssh-keygen -t rsa生成公钥私钥(默认存储在当前用户目录.ssh目录下,如/home/hadoop/.ssh)
执行ssh-copy-id ip/hostname,如ssh-copy-id master/slave1/slave2/slave3, 将master公钥分别传输到master、slave1、slave2、slave3,这样在执行集群命令时,就不需要再手动输入Namenode及各Datanode设备用户密码。
3、启动NameNode、DataNode
在master上执行hadoop-daemon.sh start namenode,
在slave上执行hadoop-daemon.sh start datanode,可分别在master和slave上启动namenode和datanode环境。可执行jps查看详情。
可分别执行hadoop-daemon.sh stop namenode/datanode关闭。
4、集群统一管理
登陆master设备,修改/home/hadoop/hadoop/etc/hadoop/slaves文件,将slave1、slave2、slave3添加到其中,配置datanode(slave)节点信息并保存。
至此,可在master管理整个集群。
start-dfs.sh 启动集群
stop-dfs.sh 停止集群
5、 校验集群情况
A、报告集群情况
登陆master(即namenode),执行hdfs dfsadmin -report 命令,会显示出namenode以及datanode的集群情况。如图:
B、Web平台查看
执行netstat -ntlp 可查看当前系统占用的端口。其中9000端口为namenode与datanode之间进行通讯的端口;50070为namenode对外提供的web访问端口。
浏览器访问http://masterIP:50070,即可显示如下:
Overview标签页显示当前集群的基础情况:
DataNode标签页显示Slave(即DataNode设备的具体情况)