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

目录


hadoop集群部署

1、 准备三台机器,如10.8.177.23,10.8.177.24,10.8.177.25
2、 修改主机名称,配置hosts文件(root用户下操作):

# 每台机器执行,我这里hd开头,后边的数字与机器ip的最后一个组一致
hostnamectl set-hostname hd-23 
hostnamectl set-hostname hd-23 --static

# 修改hosts文件,
vi /etc/hosts
#加入路由配置
10.8.177.23 hd-23
10.8.177.24 hd-24
10.8.177.25 hd-25

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

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

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

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

# 1、 在Master机器上的主目录中生成ssh公钥
ssh-keygen -t rsa 

# 2、 在其余机器上主目录中创建.ssh目录(执行上边的命令也可以)

# 3、 将Master的公钥发送给其余两台服务器(需要输入免密)
scp id_rsa.pub hadoop@hd-24:/home/hadoop/.ssh/id_rsa.pub.23
scp id_rsa.pub hadoop@hd-25:/home/hadoop/.ssh/id_rsa.pub.23

# 4、 在.shh中创建authorized_keys文件,并授权
touch authorized_keys
chmod 644 authorized_keys

# 5、 将Master的公钥加入到授权文件中
echo id_rsa.pub.23 >> authorized_keys

# 以上,即可从23无密访问24,25,可以使用以下命令测试:
ssh hd-24

5、 下载jdk、hadoop、hbase、zookeeper

  • 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
  • zookeeper-3.4.8.tar.gz :wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
  • hbase-1.2.2-bin.tar.gz:http://mirrors.hust.edu.cn/apache/hbase/1.2.2/hbase-1.2.2-bin.tar.gz
  • 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
    解压以上文件
tar 

6、 配置环境变量

vi ~/.bashrc
JAVA_HOME=/home/hadoop/jdk1.8.0_77
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

HADOOP_HOME=/home/hadoop/hadoop-2.7.2
HBASE_HOME=/home/hadoop/hbase-1.2.2
PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HBASE_HOME/sbin
expor JAVA_HOME JRE_HOME CLASSPATH HADOOP_HOME HBASE_HOME
# 配置完成以后进行编译生效
source .bashrc

#发送给其余机器
scp .bashrc hadoop@hd-24:/home/hadoop/

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

<configuration>
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://hd-23:6000</value>
  <final>true</final>
 </property>

 <property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hadoop/configsets/hadoop_tmp</value>
 </property>

 <property>
  <name>fs.checkpoint.period</name>
  <value>3600</value>
 </property>

 <property>
  <name>fs.checkpoint.size</name>
  <value>67108864</value>
 </property>

</configuration>
  • hdfs-site.xml
<configuration>
 <property>
  <name>dfs.namenode.name.dir</name>
  <value>/home/hadoop/configsets/metadata</value>
 </property>

 <property>
  <name>dfs.http.address</name>
  <value>hd-23:50070</value>
 </property>

 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hd-23:50090</value>
 </property>

 <property>
  <name>dfs.datanode.data.dir</name>
  <value>/home/hadoop/configsets/data</value>
 </property>

 <property>
  <name>dfs.replication</name>
  <value>2</value>
 </property>
</configuration>
  • yarn-site.xml
<configuration>

 <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hd-23</value>
 </property>

 <property>
  <name>yarn.resourcemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>

 <property>
  <name>yarn.log.dir</name>
  <value>/home/hadoop/configsets/yarn_log</value>
 </property>
</configuration>
  • mapred-site.xml,这个文件如果不存在的话cp mapred-site.xml.template mapred-site.xml一个
<configuration>
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>

 <property>
  <name>mapreduce.cluster.temp.dir</name>
  <value>/home/hadoop/configsets/mr_tmp</value>
  <final>true</final>
 </property>

 <property>
  <name>mapreduce.jobhistory.address</name>
  <value>hd-23:6002</value>
 </property>

 <property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>hd-23:6003</value>
 </property>
</configuration>
  • hadoop-env.sh 将JAVA_HOME配置进去
#将下边这句话注释了,不好用,但按理说应该能用,结果就是不好用
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/hadoop/jdk1.8.0_77
  • slaves 文件中加入25,24
hd-24
hd-25

8、 打包发送至其他机器

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

tar cf hadoop-2.7.2.tar hadoop-2.7.2
scp hadoop-2.7.2.tar hadoop@hd-24:/home/hadoop
scp hadoop-2.7.2.tar hadoop@hd-25:/home/hadoop
ssh hd-24 
tar xf hadoop-2.7.2.tar
exit
ssh hd-25
tar xf hadoop-2.7.2.tar
exit

9、 格式化名称节点

hadoop namenode -farmat

10、启停hadoop集群

# 启动
start-all.sh 

#停止 
stop-all.sh

11、jps查看

[hadoop@hd-23 ~]$ jps
12304 QuorumPeerMain
16208 ResourceManager
24322 Jps
15843 NameNode
16042 SecondaryNameNode

[root@hd-24 home]# jps
12082 QuorumPeerMain
15116 Jps
12924 DataNode
13036 NodeManager

[hadoop@hd-25 ~]$ jps
20130 DataNode
20242 NodeManager
19317 QuorumPeerMain
21755 Jps

12、 浏览器查看

> - [hadoop-overview](http://hd-23:50070/)
> - [job-tracker-view](http://hd-23:8088/)

zookeeper集群部署

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

cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/zookeeper-3.4.8/data
clientPort=2181

# 这里需要注意下server.{id}
server.23=10.8.177.23:2181:3887
server.24=10.8.177.24:2182:3888
server.25=10.8.177.25:2183:3889

2、数据目录

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

mkdir /home/hadoop/zookeeper-3.4.8/data
cd /home/hadoop/zookeeper-3.4.8/data
vi myid
23

ssh hd-24
mkdir /home/hadoop/zookeeper-3.4.8/data
cd /home/hadoop/zookeeper-3.4.8/data
vi myid
24
exit

ssh hd-25
mkdir /home/hadoop/zookeeper-3.4.8/data
cd /home/hadoop/zookeeper-3.4.8/data
vi myid
25
exit

3、 启停

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

HBase部署

1、 配置hbase-site.xml

<configuration>
 <property>
  <name>hbase.rootdir</name>
  <value>hdfs://hd-23:6000/hbase</value>
 </property>

 <property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
 </property>

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>hd-23,hd-24,hd-25</value>
 </property>

 <property>
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/home/hadoop/zookeeper-3.4.8/data</value>
 </property>
</configuration>

2、配置regionservers

vi regionservers
hd-23
hd-24

3、 scp发送至其他机器

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

4、 启停hbase
==启动hbase之前须先启动hdfs==

start-hbase.sh
stop-hbase.sh

5、 jps查看

[hadoop@hd-23 bin]$ jps
12304 QuorumPeerMain
16208 ResourceManager
24592 Jps
22898 HMaster
15843 NameNode
23139 HRegionServer
16042 SecondaryNameNode

[root@hd-24 home]# jps
14512 HRegionServer
12082 QuorumPeerMain
15276 Jps
12924 DataNode
13036 NodeManager

6、 浏览器查看

结语

  • 总结
    通过以上步骤快速搭建了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搭建一个局域网,这个也是下个实验的目标。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值