文档章节

快速搭建hadoop+hbase分布式集群

M
 MackCC_Sun
发布于 2016/07/28 04:20
字数 1593
阅读 83
收藏 8

hadoop集群部署

1. 准备三台机器,如`10.8.177.23`,`10.8.177.24`,`10.8.177.25`

2. 修改主机名称,配置`hosts`文件(root用户下操作):

Shell代码

 收藏代码

  1. # 每台机器执行,我这里hd开头,后边的数字与机器ip的最后一个组一致  
  2. hostnamectl set-hostname hd-23   
  3. hostnamectl set-hostname hd-23 --static  
  4.   
  5. # 修改hosts文件,  
  6. vi /etc/hosts  
  7. #加入路由配置  
  8. 10.8.177.23 hd-23  
  9. 10.8.177.24 hd-24  
  10. 10.8.177.25 hd-25  

 

3. 每台机器上创建一个用户,如hadoop:

Shell代码

 收藏代码

  1. useradd -d /home/hadoop -m hadoop  
  2. # 最好创建一个用户,不要直接使用root进行操作  

 4. 设置免密登录(==hadoop用户,下同==)

> 只需要设置master对于其他两台机器进行免密登录即可

Shell代码

 收藏代码

  1. # 1、 在Master机器上的主目录中生成ssh公钥  
  2. ssh-keygen -t rsa   
  3. # 2、 在其余机器上主目录中创建.ssh目录(执行上边的命令也可以)  
  4. # 3、 将Master的公钥发送给其余两台服务器(需要输入免密)  
  5. scp id_rsa.pub hadoop@hd-24:/home/hadoop/.ssh/id_rsa.pub.23  
  6. scp id_rsa.pub hadoop@hd-25:/home/hadoop/.ssh/id_rsa.pub.23  
  7. # 4、 在.shh中创建authorized_keys文件,并授权  
  8. touch authorized_keys  
  9. chmod 644 authorized_keys  
  10. # 5、 将Master的公钥加入到授权文件中  
  11. echo id_rsa.pub.23 >> authorized_keys  
  12. # 以上,即可从23无密访问24,25,可以使用以下命令测试:  
  13. ssh hd-24  

 5. 下载jdk、hadoop、hbase、zookeeper

Shell代码

 收藏代码

  1. > - jdk(也可以自行下载):`wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz`  
  2. > - zookeeper-3.4.8.tar.gz: `wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz`  
  3. > - hbase-1.2.2-bin.tar.gz:`wget http://mirrors.hust.edu.cn/apache/hbase/1.2.2/hbase-1.2.2-bin.tar.gz`  
  4. > - hadoop-2.7.2.tar.gz:`wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz`  

 6. 解压以上文件

7. 配置环境变量

Shell代码

 收藏代码

  1. vi ~/.bashrc  
  2. JAVA_HOME=/home/hadoop/jdk1.8.0_77  
  3. JRE_HOME=$JAVA_HOME/jre  
  4. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
  5.   
  6. HADOOP_HOME=/home/hadoop/hadoop-2.7.2  
  7. HBASE_HOME=/home/hadoop/hbase-1.2.2  
  8. PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HBASE_HOME/sbin  
  9. expor JAVA_HOME JRE_HOME CLASSPATH HADOOP_HOME HBASE_HOME  
  10. # 配置完成以后进行编译生效  
  11. source .bashrc  
  12.   
  13. #发送给其余机器  
  14. scp .bashrc hadoop@hd-24:/home/hadoop/  

 8. 配置hadoop

hadoop的配置文件位于`hadoop-2.7.2/etc/hadoop`下,需要配置`core-site.xml`,`hdfs- site.xml`,`yran-site.xml`,`mapred-site.xml`,`hadoop-env.sh`,`slaves`

 core-site.xml

Java代码

 收藏代码

  1. <configuration>  
  2.  <property>  
  3.   <name>fs.defaultFS</name>  
  4.   <value>hdfs://hd-23:6000</value>  
  5.   <final>true</final>  
  6.  </property>  
  7.   
  8.  <property>  
  9.   <name>hadoop.tmp.dir</name>  
  10.   <value>/home/hadoop/configsets/hadoop_tmp</value>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>fs.checkpoint.period</name>  
  15.   <value>3600</value>  
  16.  </property>  
  17.    
  18.  <property>  
  19.   <name>fs.checkpoint.size</name>  
  20.   <value>67108864</value>  
  21.  </property>  
  22.   
  23. </configuration>  

 hdfs-site.xml 

Xml代码

 收藏代码

  1. <configuration>  
  2.  <property>  
  3.   <name>dfs.namenode.name.dir</name>  
  4.   <value>/home/hadoop/configsets/metadata</value>  
  5.  </property>  
  6.    
  7.  <property>  
  8.   <name>dfs.http.address</name>  
  9.   <value>hd-23:50070</value>  
  10.  </property>  
  11.   
  12.  <property>  
  13.   <name>dfs.namenode.secondary.http-address</name>  
  14.   <value>hd-23:50090</value>  
  15.  </property>  
  16.   
  17.  <property>  
  18.   <name>dfs.datanode.data.dir</name>  
  19.   <value>/home/hadoop/configsets/data</value>  
  20.  </property>  
  21.   
  22.  <property>  
  23.   <name>dfs.replication</name>  
  24.   <value>2</value>  
  25.  </property>  
  26. </configuration>  

  yarn-site.xml

Xml代码

 收藏代码

  1. <configuration>  
  2.   
  3.  <property>  
  4.   <name>yarn.resourcemanager.hostname</name>  
  5.   <value>hd-23</value>  
  6.  </property>  
  7.   
  8.  <property>  
  9.   <name>yarn.resourcemanager.aux-services</name>  
  10.   <value>mapreduce_shuffle</value>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>yarn.log.dir</name>  
  15.   <value>/home/hadoop/configsets/yarn_log</value>  
  16.  </property>  
  17. </configuration>  

 mapred-site.xml,这个文件如果不存在的话`cp mapred-site.xml.template mapred-site.xml`一个

Xml代码

 收藏代码

  1. <configuration>  
  2.  <property>  
  3.   <name>mapreduce.framework.name</name>  
  4.   <value>yarn</value>  
  5.  </property>  
  6.   
  7.  <property>  
  8.   <name>mapreduce.cluster.temp.dir</name>  
  9.   <value>/home/hadoop/configsets/mr_tmp</value>  
  10.   <final>true</final>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>mapreduce.jobhistory.address</name>  
  15.   <value>hd-23:6002</value>  
  16.  </property>  
  17.   
  18.  <property>  
  19.   <name>mapreduce.jobhistory.webapp.address</name>  
  20.   <value>hd-23:6003</value>  
  21.  </property>  
  22. </configuration>  

 hadoop-env.sh 将JAVA_HOME配置进去

Shell代码

 收藏代码

  1. #将下边这句话注释了,不好用,但按理说应该能用,结果就是不好用  
  2. #export JAVA_HOME=${JAVA_HOME}  
  3. export JAVA_HOME=/home/hadoop/jdk1.8.0_77  
  4. ```  

 slaves 文件中加入25,24

Java代码

 收藏代码

  1. hd-24  
  2. hd-25  

 9. 打包发送至其他机器

jdk、hadoop、hbase、zookeeper都可以采用这种方式配置后,进行发送,zookeeper稍有不同(详见后文)

Shell代码

 收藏代码

  1. tar cf hadoop-2.7.2.tar hadoop-2.7.2  
  2. scp hadoop-2.7.2.tar hadoop@hd-24:/home/hadoop  
  3. scp hadoop-2.7.2.tar hadoop@hd-25:/home/hadoop  
  4. ssh hd-24   
  5. tar xf hadoop-2.7.2.tar  
  6. exit  
  7. ssh hd-25  
  8. tar xf hadoop-2.7.2.tar  
  9. exit  

 10. 格式化名称节点

Shell代码

 收藏代码

  1. hadoop namenode -farmat  

 11. 启停hadoop集群

Java代码

 收藏代码

  1. # 启动  
  2. start-all.sh   
  3.   
  4. #停止   
  5. stop-all.sh  

 12. jsp查看

Java代码

 收藏代码

  1. [hadoop@hd-23 ~]$ jps  
  2. 12304 QuorumPeerMain  
  3. 16208 ResourceManager  
  4. 24322 Jps  
  5. 15843 NameNode  
  6. 16042 SecondaryNameNode  
  7.   
  8. [root@hd-24 home]# jps  
  9. 12082 QuorumPeerMain  
  10. 15116 Jps  
  11. 12924 DataNode  
  12. 13036 NodeManager  
  13.   
  14. [hadoop@hd-25 ~]$ jps  
  15. 20130 DataNode  
  16. 20242 NodeManager  
  17. 19317 QuorumPeerMain  
  18. 21755 Jps  

 13. 浏览器查看

Java代码

 收藏代码

  1. http://hd-23:50070/  
  2. http://hd-23:8088/  

 

zookeeper集群部署

1. 配置,配置文件位于`/home/hadoop/zookeeper-3.4.8/conf`

 

Shell代码

 收藏代码

  1. cp zoo_sample.cfg zoo.cfg  
  2. vi zoo.cfg  
  3. tickTime=2000  
  4. initLimit=10  
  5. syncLimit=5  
  6. dataDir=/home/hadoop/zookeeper-3.4.8/data  
  7. clientPort=2181  
  8.   
  9. # 这里需要注意下server.{id}  
  10. server.23=10.8.177.23:2181:3887  
  11. server.24=10.8.177.24:2182:3888  
  12. server.25=10.8.177.25:2183:3889  

 2. 数据目录

 

> zoo.cfg定义了dataDir,需要在每个服务器的创建此目录,并建立myid文件,内部存储zoo.cfg中server.{id}的id数值

 

Shell代码

 收藏代码

  1. mkdir /home/hadoop/zookeeper-3.4.8/data  
  2. cd /home/hadoop/zookeeper-3.4.8/data  
  3. vi myid  
  4. 23  
  5.   
  6. ssh hd-24  
  7. mkdir /home/hadoop/zookeeper-3.4.8/data  
  8. cd /home/hadoop/zookeeper-3.4.8/data  
  9. vi myid  
  10. 24  
  11. exit  
  12.   
  13. ssh hd-25  
  14. mkdir /home/hadoop/zookeeper-3.4.8/data  
  15. cd /home/hadoop/zookeeper-3.4.8/data  
  16. vi myid  
  17. 25  
  18. exit  

 3. 启停

 

 

Shell代码

 收藏代码

  1. cd /home/hadoop/zookeeper-3.4.8/bin  
  2. ./zkServer.sh start   

 

 

HBase部署

1、 配置hbase-site.xml

 

Xml代码

 收藏代码

  1. <configuration>  
  2.  <property>  
  3.   <name>hbase.rootdir</name>  
  4.   <value>hdfs://hd-23:6000/hbase</value>  
  5.  </property>  
  6.   
  7.  <property>  
  8.   <name>hbase.cluster.distributed</name>  
  9.   <value>true</value>  
  10.  </property>  
  11.   
  12. <property>  
  13.   <name>hbase.zookeeper.quorum</name>  
  14.   <value>hd-23,hd-24,hd-25</value>  
  15.  </property>  
  16.   
  17.  <property>  
  18.   <name>hbase.zookeeper.property.dataDir</name>  
  19.   <value>/home/hadoop/zookeeper-3.4.8/data</value>  
  20.  </property>  
  21. </configuration>  

 2、配置regionservers

 

 

Shell代码

 收藏代码

  1. vi regionservers  
  2. hd-23  
  3. hd-24  

 3、 scp发送至其他机器

 

> 具体方式参见第一章第9节

4、 启停hbase

==启动hbase之前须先启动hdfs==

Shell代码

 收藏代码

  1. start-hbase.sh  
  2. stop-hbase.sh  

 5、 jps查看

Shell代码

 收藏代码

  1. [hadoop@hd-23 bin]$ jps  
  2. 12304 QuorumPeerMain  
  3. 16208 ResourceManager  
  4. 24592 Jps  
  5. 22898 HMaster  
  6. 15843 NameNode  
  7. 23139 HRegionServer  
  8. 16042 SecondaryNameNode  
  9.   
  10. [root@hd-24 home]# jps  
  11. 14512 HRegionServer  
  12. 12082 QuorumPeerMain  
  13. 15276 Jps  
  14. 12924 DataNode  
  15. 13036 NodeManager  

 6、 浏览器查看

 

http://hd-23:16030/

结语

总结

通过以上步骤快速搭建了hadoop环境,在此期间,只有进行SSH免密登录时需要登录其他两台机器进行添加公钥文件,其余均通过一个SSH客户端 窗口搞定(其实免密登录也可以)。linux发行版本为centos7,如果使用centos 6.x的版本,修改主机名称略有不同(`etc/sysconfig/network`,`hosts`,`reboot`)。

 

> - 猜想

 

> 搭建此环境的目的有两点:

  

>  1、 提供一个hadoop测试环境。

 

>  2、 为后续采用docker进行快速部署做预研。通过以上搭建过程可知,除了zookeeper的dataDir目录中myid文件内容不同之外,其余的内容 均相同,而myid的内容可以通过读取zoo.cfg文件获取,故如果此时要做多机docker集群的话,只要解决了多机docker容器能互相访问(同 个局域网),就可以采用同一个镜像进行快速部署。而使多机docker的容器能够访问,可以采用open vSwitch搭建一个局域网,这个也是下个实验的目标。

本文转载自:http://alleyz.iteye.com/blog/2313310

M
粉丝 4
博文 158
码字总数 29095
作品 0
朝阳
技术主管
私信 提问
分布式网盘系统--weirWQ

weirWQ 是使用 Java 编写的分布式网盘系统。 web端用spring mvc4.0.5 hadoop+hbase 伪分布实验环境 已实现用户注册 登陆 网盘管理:上传文件 创建文件夹 修改文件及文件夹 分享文件及文件夹 ...

weir2008
2015/05/28
9.7K
1
简单搭建 Apache Kafka 分布式消息系统

早先都是用的基于 JMS 规范的消息系统, 像 ActiveMQ, IBM MQSeries 等. 随着互联网的发展, 大约是要适应当今大数据, 高可用性, 高效的需求, 于是诞生了 Apache Kafka 这一新时代的分布式消息...

YanbinQ
2016/10/18
36
0
事件驱动型 TCP 协议网络框架 - NebulaBootstrap

Nebula作为软件名字在OSChina已经存在,只好用Nebula的分布式解决方案名NebulaBootstrap来投递。 Nebula是一个C++语言开发的事件驱动型的TCP协议网络框架,支持包括proto3、http、https、web...

Bwar
02/28
804
0
分布式离线/实时日志统计系统(Hadoop.Spark)

概要 本文总结采用目前最流行的Hadoop生态圈和Spark生态圈搭建一套完整的分布式日志采集系统,支持离线和实时计算,可以满足多种需求,例如PV,UV,实时交易量等各个业务下的场景。 项目架构...

热血沸腾
2017/12/24
0
0
docker使用rexray基于ceph做共享存储

docker使用rexray基于ceph做共享存储 背景   Docker Swarm使得分布式、集群的搭建部署速度提升了指数级别,原本的部署方式可能要用一天的时间,改用docker部署后可以减少到十分钟以内。  ...

anddyson
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部