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

hadoop集群部署

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

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

Shell代码node

 收藏代码

  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:linux

Shell代码web

 收藏代码

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

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

> 只须要设置master对于其余两台机器进行免密登陆便可apache

Shell代码centos

 收藏代码

  1. # 一、 在Master机器上的主目录中生成ssh公钥  
  2. ssh-keygen -t rsa   
  3. # 二、 在其他机器上主目录中建立.ssh目录(执行上边的命令也能够)  
  4. # 三、 将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. # 四、 在.shh中建立authorized_keys文件,并受权  
  8. touch authorized_keys  
  9. chmod 644 authorized_keys  
  10. # 五、 将Master的公钥加入到受权文件中  
  11. echo id_rsa.pub.23 >> authorized_keys  
  12. # 以上,便可从23无密访问24,25,可使用如下命令测试:  
  13. ssh hd-24  

 5. 下载jdk、hadoop、hbase、zookeeper浏览器

Shell代码bash

 收藏代码

  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部署

一、 配置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>  

 二、配置regionservers

 

 

Shell代码

 收藏代码

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

 三、 scp发送至其余机器

 

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

四、 启停hbase

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

Shell代码

 收藏代码

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

 五、 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  

 六、 浏览器查看

 

http://hd-23:16030/

结语

总结

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

 

> - 猜测

 

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

  

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

 

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

相关文章
相关标签/搜索