hadoop集群搭建(亲自操作成功步骤!值得信赖!)
1.1集群简介
hadoop的核心组件:
HDFS(分布式文件系统)
YARN(运算资源调度系统)
MapReduce(分布式运算编程框架)
HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起
HDFS集群:
负责海量数据的存储,集群中的角色主要有
YARN集群:
负责海量数据运算时的资源调度,集群中的角色主要有
(那mapreduce是什么呢?它其实是一个应用程序开发包)
本集群搭建案例,以5节点为例进行搭建,角色分配如下:
|
部署图如下:
1.2服务器准备
本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:
Vmware 10.0
Centos 6.7 64bit
1.3网络环境准备
采用NAT方式联网
网关地址:192.168.33.1
个服务器节点IP地址:192.168.33.201、192.168.33.202、192.168.33.203
子网掩码:255.255.255.0
1.4服务器系统设置
添加HADOOP用户
useradd hadoop
passwd hadoop
为HADOOP用户分配sudoer权限
su root
vi /etc/sudoers
(ALL)ALL
同步时间
设置主机名
hadoop1
hadoop2
hadoop3
配置内网域名映射:
192.168.33.201 hadoop1
192.168.33.202 hadoop2
192.168.33.203 hadoop3
配置ssh免密登陆
设置三个机器的本机免密登录(三台机器配置一样):
ssh-keygen -t rsa ---一直回车即可
cd /root/.ssh/ ---生成了公钥和私钥
cat id_rsa.pub >> authorized_keys ---将公钥追加到授权文件中
more authorized_keys ---可以查看到里面追加的公钥
ssh hadoop1
配置两两之间的免密登录:
将hadoop1中的公钥复制到hadoop2中ssh-copy-id -i hadoop2 验证一下:ssh hadoop2
将hadoop3中的公钥复制到hadoop2中ssh-copy-id -i hadoop2 验证一下:ssh hadoop2
这样hadoop2中的授权文件就有三个机器的公钥,再把hadoop2中的授权文件复制给hadoop1和hadoop3
scp /root/.ssh/authorized_keys hadoop1:/root/.ssh/
scp /root/.ssh/authorized_keys hadoop3:/root/.ssh/
这样就ok了!
关闭防火墙
查看防火墙状态
service iptables status
关闭防火墙
service iptables stop
查看防火墙开机启动状态
chkconfig iptables --list
关闭防火墙开机启动
chkconfig iptables off
1.5 Jdk环境安装
上传jdk安装包
规划安装目录
解压安装包
配置环境变量
1.6 HADOOP安装部署
上传HADOOP安装包
规划安装目录
编译后的hadoop压缩包)
tar -zxvf hadoop-2.6.4.tar.gz
配置环境变量
修改配置文件 $HADOOP_HOME/etc/hadoop/
最简化配置如下:
vi hadoop-env.sh(修改)
|
vi core-site.xml
|
vi hdfs-site.xml(可以不用配置,全部使用默认值)
|
vi mapred-site.xml(重命名mv mapred-site.xml.template mapred-site.xml)
|
vi yarn-site.xml
|
把hadoop1中的jdk、hadoop文件夹复制到其他两个节点:
scp -r /usr/local/jdk hadoop2:/usr/local/
scp -r /usr/local/jdk hadoop3:/usr/local/
scp -r /usr/local/hadoop hadoop2:/usr/local/
scp -r /usr/local/hadoop hadoop3:/usr/local/
将hadoop1中的环境变量复制到其他两个节点中:
scp /etc/profile hadoop2:/etc/
scp /etc/profile hadoop3:/etc/
复制完了以后,在hadoop2和hadoop3中分别都执行source /etc/profile
vi slaves(/usr/local/hadoop/etc/hadoop/slaves写上从节点的主机名,slaves主要是为了自动化启动脚本使用的,不修改的话,hadoop集群照样能启动)
|
1.7 启动集群
初始化HDFS(hadoop1)
bin/hadoop namenode -format |
NameNode只能在hadoop1上启动,因为配置在hadoop1上
hadoop-daemon.sh start namenode
DataNode三个节点上都可以启动
Hadoop-daemon.sh start datanode
在hadoop1上,start-all.sh启动集群,可以jps,查看相关进程是否开启了。http://hadoop1:50070
启动HDFS
|
启动YARN
|
一起学习,一起进步