布式实时日志系统(三) 环境搭建之centos 6.4下hadoop 2.5.2完全分布式集群搭建最全资料
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式处理,采用 flume 收集日志,发送到 kafka 队列做缓冲,storm 分布式实时框架进行消费处理,短期数据落地到 hbase、mongo中,长期数据进入 hadoop 中存储。 接下来打算将这其间所遇到的问题、学习到的知识记录整理下,作为备忘,作为分享,带给需要的人。
hadoop 简介,也可以去官网看介绍 :(slideshare PPT 分享服务在大陆是被墙的,不能科学上网?查看使用shadowsocks服务享受自由网络学习方法)
在搭建 hadoop 集群的过程中还是遇到很多问题的,我尽量的以初学者的口吻来写这篇文章,尽量做到详尽,当然不明白、不清楚的地方可以随时留言或找到我的联系方式与我沟通。
一、总体环境说明
操作系统: cenos 6.4 ,三台192.168.9.92、192.168.9.93、192.168.9.94
jdk版本: 1.7.0_75
hadoop版本: 2.5.2 (目的与hbase兼容)
hadoop集群3个节点,一主两从,如下:
角色 | ip | 用户 | 运行进程 |
---|---|---|---|
master | 192.168.9.92 | hadoop | JobHistoryServer,ResourceManager,NameNode,NodeManager,DataNode,Main |
slave1 | 192.168.9.93 | hadoop | NodeManager,DataNode |
slave2 | 192.168.9.94 | hadoop | NodeManager,DataNode |
二、设置环境变量
安装 hadoop 前需要提前配置好三台机器的 hostname,之间ssh无密码可登陆,Java环境的搭建,bashrc 的一些变量设置等,详细如下
2.1 设置机器hostname别名
设置别名的目的是机器间相互识别可以不用ip,配置文件中也可以不用ip,通用性上更强一些。
在 master 机器上面执行下面的命令:
1 |
# 当前ssh窗口即可生效 |
同样,在 slave1 、slave2 机器上面执行相同的命令,只需要更改最后一句为相应的角色名称
1 |
HOSTNAME=slave1 |
1 |
HOSTNAME=slave2 |
添加Hosts映射关系,三台机器上面分别都执行操作 vi /etc/hosts
添加如下内容 ,之后在每台机器上面ping
一下,确保能够连接彼此。
1 |
192.168.9.92 master |
2.2 配置 JDK 环境
下载 Java 对应的版本,地址如下jdk-7u75-linux-i586.tar_0.gz,配置环境变量即可完成java环境的配置,详情看脚本 :
1 |
# 解压到 /opt/下面 |
使修改的配置立即生效,终端中执行source /etc/profile
。
测试是否ok,执行命令which java
,若出现/opt/jdk1.7.0_75/bin/java
表示已经ok 或者java -version
,出现java version "1.7.0_75"
也表明ok。
2.3 配置集群之间SSH无密码登陆
1、为了hadoop集群的安全与方便管理,我们要另外新建用户,并设置密码,命令如下:
1 |
# 创建账号hadoop并赋予密码nopass.2 |
2、给hadoop账户赋予root权限 vi /etc/sudoers
添加如下:
1 |
hadoop ALL=(ALL) ALL |
这样就将生成的授权秘钥拷贝到了slave1和slave2的/home/hadoop/.ssh目录下,从 master 机器 ssh到 slave1 、slave2 都不再需要密码了,同理,在slave1、slave2机器上执行上面的命令即可完成slave 到master之间的无密码登录。(其实,操作完后,slave之间也是可以无密码登录的,只是不需要而已)
测试下 ,不使用密码登录即ok
1 |
ssh hadoop@master |
三、Hadoop 集群的安装
hadoop 下载地址 :https://hadoop.apache.org/releases.html
hadoop 的安装其实很简单,解压完毕后,修改配置文件、环境变量就完成了安装,需要在每个节点都安装,为了写了一键安装部署脚本,执行hadoop_install.sh
后即可用启动命令进行测试,尽量做到简单方便的运维,提供的脚本如往常一样再本文最后给出,下面就一步步解释下:
1、 解压 hadoop-2.5.2.tar.gz
文件
1 |
tar -zxvf hadoop-2.5.2.tar.gz -C /home/hadoop/ |
2、修改环境变量vi /home/hadoop/.bashrc
,添加如下代码:
1 |
export HADOOP_HOME=$HOME/hadoop-2.5.2 |
3、 修改 hadoop 文件目录中的各项配置文件 ,配置文件详细说明见
3.1、修改core-site.xml
配置
1 |
<configuration> |
3.2 、修改hdfs-site.xml
,代码如下:
1 |
<configuration> |
备注:访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hdfs-site.xml中的dfs.webhdfs.enabled为true。
3.3 、修改mapred-site.xml
,代码如下:
1 |
<configuration> |
备注:jobhistory是Hadoop自带了一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
3.4、 修改yarn-site.xml
,代码如下:
1 |
<configuration> |
3.5、 修改两个启动命令文件 hadoop-env.sh
和 yarn-env.sh
,添加 JAVA_HOME 变量 :
1 |
export JAVA_HOME=/opt/jdk1.7.0_75 |
3.6 、 修改 slaves
配置,代码如下,添加两台slaves机器:
1 |
slave1 |
以上就是整个安装过程,下面测试下是否安装ok
四、Hadoop 集群的测试
4.1 启动 hadoop,验证页面是否ok
1 、格式化磁盘,格式化hadoop使用的文件磁盘,并不是物理上的磁盘,需要在每个节点上都执行下面的命令
1 |
source $HADOOP_HOME/bin/hdfs namenode –format |
2、 启动hadoop ,注意:只需要在 master 节点上启动即可,会自动启动slave各个节点
1 |
# start-dfs.sh 此命令启动了namenode、secondaryNamenode以及datanode |
3、 停止 hadoop , 注意:只需要在 master 节点上执行即可
1 |
$HADOOP_HOME/sbin/stop-all.sh |
5、 HTTP效果,通过浏览器查看集群运行状态,访问 http://192.168.9.92:50070/、http://192.168.9.92:8088/、http://192.168.9.92:19888/ 即可看到下图的效果
6、单独重启丢失的DataNode节点
如果某个DataNode节点Dead(由于死机或人为原因等),可以在不重启整个Hadoop服务的情况下进行单独重启。
方法如下:
在NameNode的hadoop-2.5.2/sbin目录下,执行命令启动HDFS DataNode
./hadoop-daemons.sh start datanode
./yarn-daemons.sh start nodemanager
或者单独启动NameNode节点,命令如下:
1 |
./hadoop-daemon.sh start namenode |
上述四个命令都可以指定—config参数,后面跟hadoop的集群配置文件所在目录(即$HADOOP_HOME/etc/hadoop),大家可通过参数-h查看命令帮助信息
注意:上面命令不会影响已经启动的hdfs或yarn服务,只会把丢失节点的服务启动起来。
4.2 运行Hadoop自带的wordcount示例
1、 创建input文件
1 |
cd /home/hadoop/ |
2、创建用户目录,必须是 /user/用户名
1 |
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hadoop |
3、上传文件
1 |
$HADOOP_HOME/bin/hadoop fs -put input /user/hadoop |
4、 执行 wordcount 程序
1 |
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /user/hadoop/input /user/hadoop/output |
5、验证结果
1 |
$HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/output/part-r-00000 |
1 |
Hadoop 1 |
五、参考资料
http://blog.csdn.net/hwwn2009/article/details/39889465
http://www.cnblogs.com/bxljoy/p/3880250.html
http://ju.outofmemory.cn/entry/29825
http://blog.csdn.net/tang9140/article/details/42869531
布式实时日志系统(三) 环境搭建之centos 6.4下hadoop 2.5.2完全分布式集群搭建最全资料的更多相关文章
- 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建
一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- hbase分布式集群搭建
hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...
- kafka系列二:多节点分布式集群搭建
上一篇分享了单节点伪分布式集群搭建方法,本篇来分享一下多节点分布式集群搭建方法.多节点分布式集群结构如下图所示: 为了方便查阅,本篇将和上一篇一样从零开始一步一步进行集群搭建. 一.安装Jdk 具体安 ...
- 大数据之Hadoop完全分布式集群搭建
1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- Hadoop-HDFS的伪分布式和完全分布式集群搭建
Hadoop-HDFSHDFS伪分布式集群搭建步骤一.配置免密登录 ssh-keygen -t rsa1一句话回车到底 ssh-copy-id -i ~/.ssh/id_rsa.pub root@no ...
- HBase完全分布式集群搭建
HBase完全分布式集群搭建 hbase和hadoop一样也分为单机版,伪分布式版和完全分布式集群版,此文介绍如何搭建完全分布式集群环境搭建.hbase依赖于hadoop环境,搭建habase之前首先 ...
随机推荐
- utf8 ucs4
这个问题不好回答,首先UTF-8编码只不过是一种Unicode的转换,兼容ASCII.所以,UTF-8编码支持的最大字符编码应该是Unicode支持的最大字符编码. 理论上,UTF-8编码可以支持最大 ...
- 第一个jquery程序
<html> <head></head> <script type="text/javascript" src="jquery- ...
- 用外部物理路由器时与外部dhcp服务时怎样使用metadata服务(by quqi99)
作者:张华 发表于:2015-12-31版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 用外部 ...
- 谈谈Android中的Rect类——奇葩的思维
最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的.不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了.首先介绍一下Rect类:Rect类主要 ...
- 性能监控-TP理解
首先给出Google到的答案: The tp90 is a minimum time under which 90% of requests have been served. tp90 = top ...
- 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
配置域名 在阿里云找到主域名 进入主域名之后,右上角添加解析,添加子域名, 记录类型选择cname,主机记录填写子域名的名称,记录值为主域名,至此阿里云已经配置好了. 检查nginx安装 首先检查服务 ...
- nodejs的__dirname与__filename
__filename变量获取当前模块文件的带有完整绝对路径的文件名:[包含文件名本身的绝对路径] __dirname变量获得当前文件所在目录的完整目录名.[不包含文件名本身的绝对路径] 该方法用于获取 ...
- js准确获取当前页面url网址信息
这篇文章主要为大家介绍了js准确获取当前页面url网址信息的多种方法,包括正则法.split拆分法等,需要的朋友可以参考下 在WEB开发中,时常会用到javascript来获取当前页面的url网址 ...
- synchronized关键字的用法总结
synchronized关键字主要有以下这3种用法: 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代 ...
- 通过MyEclipse部署web应用程序开发环境
1.下载并安装MyEclipse10 2.配置java开发的jar包 3.配置tomcat服务器 4.部署tomcat服务器 点击Bronse可以查看部署后的文件夹目录 5.启动tomcat服务器 6 ...