大家可能在网上一搜索大数据,巴拉巴拉一大堆的理论性的东西扑面而来,都是这样过来的,当时一脸懵逼,所以在此就不给大家再介绍理论性的知识了,直接带大家搭建分布式的开发环境。
hadoop的分布式架构 (一主二从)
主机名 | ip地址 | namenode | datanode |
---|---|---|---|
master | 192.168.6.133 | 是 | 否 |
slave1 | 192.168.6.131 | 否 | 是 |
slave2 | 192.168.6.132 | 否 | 是 |
第一步
虚拟机,java环境准备
需要有一台centerOS7虚拟机,同时已经搭建好了jdk的环境,如有疑问可移驾
hadoop之旅1-centerOS7: 搭建java环境
第二步
软件准备
准备好hadoop的开发包
- apache官网下载
- apache历史版本库下载
- 我给大家分享的百度云链接下载 版本:hadoop-2.7.3
- 我使用filezilla软件将解压包放入linux系统,大家也可以通过wget命令直接下载到linux系统中
第三步
解压hadoop,重命名
- 在下载的hadoop压缩包的目录下解压hadoop压缩包
[root@localhost mmcc]# tar -zxvf hadoop-2.7.3.tar.gz
....
//重命名目录名称(可选)
[root@localhost mmcc]# mv hadoop-2.7.3/ hadoop2.7.3
- 查看hadoop的根路径
[root@localhost mmcc]# cd hadoop2.7.3/
[root@localhost hadoop2.7.3]# pwd
/home/mmcc/hadoop2.7.3 //配置环境变量时会用到
第四步
配置环境变量
- 在
/etc/profile
最下面,hadoop之旅1-centerOS7: 搭建java环境章节配置的PATH
,CLASSPATH
上面增加环境变量配置
HADOOP_HOME=/home/mmcc/hadoop2.7.3
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH:.
- 使环境变量生效
[root@localhost jdk1.8]# source /etc/profile
- 配置hadoop的java环境,编辑hadoop根目录下
/etc/hadoop/
下的hadoop.env.sh
脚本文件
vi /hadoop-2.7.3/etc/hadoop/hadoop.env.sh
export JAVA_HOME=/home/mmcc/jdk1.8 //配置java的环境目录
- 配置hadoop的启动环境,编辑hadoop根目录下
/etc/hadoop/
下的core-site.xml
文件。
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> (master处为当前主机ip或主机名)
</property>
此处的master后面会教大家
第五步
分布式环境搭建
- 此处为了方便,直接通过虚拟机克隆的方式,将镜像克隆多份,这样在此之前搭建的所有环境都是同步存在的
- 使用该命令给每个节点的设置对应的主机名
[root@localhost mmcc]# hostnamectl set-hostname master/slave1/slave2
- 检测网络
[root@localhost mmcc]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.133 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 fe80::3d1d:5127:6666:c62d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f4:ef:5d txqueuelen 1000 (Ethernet)
RX packets 317168 bytes 315273916 (300.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 149675 bytes 14400069 (13.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 12826 bytes 3163428 (3.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12826 bytes 3163428 (3.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果查询不到ip地址,需要配置网络
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33 (我的虚拟机版本,别的版本可能不一样)
ONBOOT="yes" 表开启网络。
- 设置网络别名,即IP对应的别名 如:
hdfs://master:9000
[root@localhost network-scripts]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.133 master
192.168.6.131 slave1
192.168.6.132 slave2
重启网络
service network restart 重启网络
然后大家可以试着ping master/slave1/slave2
如果ping通说明配置成功
- 格式化hdfs,在每台节点上执行以下命令
hdfs namenode -format
启动之前进行格式化,如果没有error和Exception 表示格式化成功
6. master主机配置hadoop集群节点
cd /home/mmcc/hadoop2.7.3/etc/hadoop
[root@localhost hadoop]# vi slaves
//增加以下内容
slave1
slave2
7. 关闭每个节点防火墙,启动hdfs服务,
[root@localhost mmcc]# systemctl stop firewalld
[root@localhost mmcc]# hadoop-daemon.sh start namenode //主节点master
[root@localhost mmcc]# hadoop-daemon.sh start datanode //从节点slave1,slave2
然后可以在网页上输入主节点的地址master:50070
或ip地址:50070
查看当前的状态及其节点状态哦。到此一个分布式的hadoop环境已经成功启动。
下一节会教大家如何进行免密登录,一键启动集群,及一些简单的hdfs文件存储命令,
大家在配置过程中如果有什么问题可以查看log日志进行问题排查。欢迎加我微信一起学习一起进步哈