Hadoop-2.7.4 集群快速搭建
Hadoop简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Hadoop
分布式存储系统HDFS (Hadoop Distributed File System )
- 分布式存储系统
- 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务
分布式计算框架MapReduce
- 分布式计算框架
- 具有 易于编程、高容错性和高扩展性等优点。
HDFS优点
高容错性
- 数据自动保存多个副本
- 副本丢失后,自动恢复
适合批处理
- 移动计算而非数据
- 数据位置暴露给计算框架
适合大数据处理
- GB 、TB 、甚至PB 级数据
- 百万规模以上的文件数量
- 10K+ 节点
可构建在廉价机器上
- 通过多副本提高可靠性
- 提供了容错和恢复 机制
HDFS缺点
低延迟数据访问
- 比如毫秒级
- 低延迟与高吞吐率
小文件存取
- 占用NameNode 大量内存
- 寻道时间超过读取时间
并发写入、文件随机修改
- 一个文件只能有一个写者
- 仅支持append
准备工作
环境
JDK:1.8
Hadoop Release:2.7.4
centos:7.3
node1(master) 主机: 192.168.252.121
node2(slave1) 从机: 192.168.252.122
node3(slave2) 从机: 192.168.252.123
安装 JDK
创建用户
建议创建一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统
$ useradd hadoop
$ passwd hadoop
New password:
Retype new password:
授权 root 权限,在root
下面加一条hadoop
的hadoop ALL=(ALL) ALL
$ chmod 777 /etc/sudoers
$ vi /etc/sudoers
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
$ pkexec chmod 0440 /etc/sudoers
免秘钥登录
SSH 免秘钥
安装
下载解压
在 ndoe1 上操作
su hadoop
cd /home/hadoop/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
tar -zxvf hadoop-2.7.4.tar.gz
环境变量
如果是对所有的用户都生效就修改vi /etc/profile
文件 如果只针对当前用户生效就修改 vi ~/.bahsrc
文件
sudo vi /etc/profile
#hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/
使环境变量生效,运行 source /etc/profile
使/etc/profile
文件生效
配置Hadoop
进入hadoop 配置文件目录
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/
编辑 hadoop-env.sh
文件,找到 JAVA_HOME
改为 JDK 的安装目录
sudo vi hadoop-env.sh
export JAVA_HOME=/lib/jvm
修改 core-site.xml
打开 core-site.xml文件并对其进行编辑,如下图所示。
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp</value>
</property>
</configuration>
修改 hdfs-site.xml
打开hdfs-site.xml文件并对其进行编辑,如下图所示。
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/data</value>
</property>
</configuration>
修改 mapred-site.xml
目录下么没有这个文件,这有一个模板,我们需要先拷贝一份
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>
修改 yarn-site.xml
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置集群
复制节点
将 hadoop-2.7.4 文件夹重打包后复制到其他子节点
cd /home/hadoop/
tar zcvf hadoop.tar.gz hadoop-2.7.4
scp hadoop.tar.gz hadoop@node2:/home/hadoop/
scp hadoop.tar.gz hadoop@node3:/home/hadoop/
在其他子节点 解压
tar -zxvf hadoop.tar.gz
配置slaves文件
修改(Master主机)node1/etc/hadoop/slaves
该文件指定哪些服务器节点是datanode
节点。删除locahost
,添加所有datanode
节点的主机名
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/
[hadoop@node1 hadoop]$ cat slaves
node2
node3
集群操作
Format
格式化namenode和datanode并启动,(在master上执行就可以了 不需要在slave上执行)
cd /home/hadoop/hadoop-2.7.4/bin
./hadoop namenode -format
./hadoop datanode -format
启动 hadoop
关闭防火墙
systemctl stop firewalld.service
cd /home/hadoop/hadoop-2.7.4/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
或者
./start-all.sh
./mr-jobhistory-daemon.sh start historyserver
查看进程服务
查看启动进程,缺少以下任一进程都表示出错
$ jps
2528 NameNode
2720 SecondaryNameNode
2872 ResourceManager
3151 JobHistoryServer
查看端口占用情况
netstat -tnlp | grep java
访问node1
停止 hadoop
cd /home/hadoop/hadoop-2.7.4/sbin
./stop-all.sh
或者 jps 查看进程kill
掉
Contact
- 作者:鹏磊
- 出处:http://www.ymq.io
- Email:admin@souyunku.com
- 版权归作者所有,转载请注明出处
- Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享
- mac下使用github
- CSS3新特性应用之结构与布局
- 程序猿的日常——Java基础之equals与hashCode
- 贾康:智能金融需在发展和规范中掌握理性权衡点
- Objective-C: 字符串NSString与NSMutableString
- 2017年最后一篇推送,仍然与技术有关盘点深度学习论文年度之“最”
- 【垂直居中高级篇】你不知道的垂直居中方式
- 第一个APP:IOS做简单运算的计算器
- 进程、线程、应用程序之间的关系
- CSS3新特性应用之用户体验
- 瑞波币正式超越Uber和比特币现金,市值突破590亿美元
- 程序猿的日常——JVM内存模型与垃圾回收
- 第一个只出现一次的字符
- 在字符串中删除特定的字符
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java并发编程(7)- 线程调度 - 线程池
- Java并发编程(6)- J.U.C组件拓展
- Java并发编程(5)- J.U.C之AQS及其相关组件详解
- Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。
- Java并发编程(4)- 线程安全策略
- Java并发编程(3)- 如何安全发布对象
- Python 技术篇-3行代码实现语音朗读,pywin32库实现语音朗读
- Java并发编程(2)- 线程安全性详解
- Python 技术篇-1行代码实现语音识别,speech库快速实现简单的语音对话
- linux和windows互传文件,用户配置文件和密码配置文件,用户组和用户管理
- 除Innodb和MyISAM外MySQL还有哪些存储引擎
- MySQL自身对性能的影响
- Python 技术篇-用pywin32库实现读写剪贴板
- Excel 技巧篇-在指定范围内生成指定小数位的随机数
- PyQt5 技巧篇-窗口置顶设置,如何使窗口始终显示在最前面