Hadoop-2.7.4 集群快速搭建
Hadoop简介
2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch
Hadoop 于 2005 年秋天作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中
Hadoop
分布式存储系统HDFS (Hadoop Distributed File System )
- 分布式存储系统
- 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务
分布式计算框架MapReduce
- 分布式计算框架
- 具有 易于编程、高容错性和高扩展性等优点。
HDFS优点
高容错性
- 数据自动保存多个副本
- 副本丢失后,自动恢复
适合批处理
- 移动计算而非数据
- 数据位置暴露给计算框架
适合大数据处理
- GB 、TB 、甚至PB 级数据
- 百万规模以上的文件数量
- 10K+ 节点
可构建在廉价机器上
- 通过多副本提高可靠性
- 提供了容错和恢复 机制
HDFS缺点
低延迟数据访问
- 比如毫秒级
- 低延迟与高吞吐率
小文件存取
- 占用NameNode 大量内存
- 寻道时间超过读取时间
并发写入、文件随机修改
- 一个文件只能有一个写者
- 仅支持append
准备工作
环境
1 | JDK:1.8 |
安装 JDK
SSH 免秘钥
创建用户
建议创建一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统
1 | $ useradd hadoop |
授权 root 权限,在root
下面加一条hadoop
的hadoop ALL=(ALL) ALL
1 | $ chmod 777 /etc/sudoers |
免秘钥登录
安装
下载解压
在 ndoe1 上操作
1 | su hadoop |
环境变量
如果是对所有的用户都生效就修改vi /etc/profile
文件
如果只针对当前用户生效就修改 vi ~/.bahsrc
文件
1 | sudo vi /etc/profile |
1 | #hadoop |
使环境变量生效,运行 source /etc/profile
使/etc/profile
文件生效
配置Hadoop
进入hadoop 配置文件目录
1 | cd /home/hadoop/hadoop-2.7.4/etc/hadoop/ |
编辑 hadoop-env.sh
文件,找到 JAVA_HOME
改为 JDK 的安装目录
1 | sudo vi hadoop-env.sh |
1 | export JAVA_HOME=/lib/jvm |
修改 core-site.xml
打开 core-site.xml文件并对其进行编辑,如下图所示。
1 | vi core-site.xml |
1 | <configuration> |
修改 hdfs-site.xml
打开hdfs-site.xml文件并对其进行编辑,如下图所示。
1 | vi hdfs-site.xml |
1 | <configuration> |
修改 mapred-site.xml
目录下么没有这个文件,这有一个模板,我们需要先拷贝一份
1 | cp mapred-site.xml.template mapred-site.xml |
1 | <configuration> |
修改 yarn-site.xml
1 | vi yarn-site.xml |
1 | <configuration> |
配置集群
复制节点
将 hadoop-2.7.4 文件夹重打包后复制到其他子节点
1 | cd /home/hadoop/ |
在其他子节点 解压
1 | tar -zxvf hadoop.tar.gz |
配置slaves文件
修改(Master主机)node1/etc/hadoop/slaves
该文件指定哪些服务器节点是datanode
节点。删除locahost
,添加所有datanode
节点的主机名
1 | cd /home/hadoop/hadoop-2.7.4/etc/hadoop/ |
集群操作
Format
格式化namenode和datanode并启动,(在master上执行就可以了 不需要在slave上执行)
1 | cd /home/hadoop/hadoop-2.7.4/bin |
启动 hadoop
关闭防火墙
1 | systemctl stop firewalld.service |
1 | cd /home/hadoop/hadoop-2.7.4/sbin |
或者
1 | ./start-all.sh |
查看进程服务
查看启动进程,缺少以下任一进程都表示出错
1 | $ jps |
查看端口占用情况
1 | netstat -tnlp | grep java |
访问node1
1 | http://192.168.252.121:50070 |
停止 hadoop
1 | cd /home/hadoop/hadoop-2.7.4/sbin |
1 | ./stop-all.sh |
或者 jps 查看进程kill
掉