您的位置:首页 > 运维架构

hadoop、zookeeper、hbase、spark集群环境搭建

2017-04-10 17:38 1246 查看
本文详细讲解如何搭建Hadoop、zookeeper、HbaseSpark的集群环境,这里我是在本地虚拟机上搭建的集群,但是和实际环境的配置差不多。我会从零开始搭建并且尽量写得详细,所以还会讲到很多配置Linux环境的东西,希望大家不要烦,务必按照步骤一步步做下去。

本文主要讲了以下内容:

Linux系统的一些基础配置
安装jdk
配置SSH免登陆
hadoop的安装和配置
zookeeper集群的安装配置
hbase的安装和配置
spark的安装和配置


1 使用Vmware安装Linux系统

这个很easy,软件和操作步骤请自行搜索,我安装的ubuntu系统,三个主机的名称分别是master、slave1、slave2,用户名统一都是trigl,后面设置ssh免登录需要用户名是相同的否则就会出错。后面的很多配置这三台主机都是相同的,直接复制配置文件即可,这里教大家一下不同主机之间传输文件(文件夹)的命令:
scp -r 本主机文件路径 其他主机用户名@其他主机IP:文件父目录
1
1
[/code]

如将master的jdk的tar包传给slave1,命令如下:
scp -r /data/install/java/jdk-7u45-linux-x64.tar.gz trigl@192.168.79.133:/data/install/java
1
1
[/code]

2 安装xshell和xftp

xshell用于连接linux系统并输入命令,xftp用于向linux系统传输文件,安装比较简单,请自行搜索。

我安装了ubuntu系统后首次用xshell连接是连不上的,如图:



这是由于新装的系统没有ssh服务,使用下面命令下载安装:
sudo apt-get install openssh-server
1
1
[/code]

安装完成以后用xshell就可以连接上了


3 解决ubuntu自带VI编辑器不好用的问题

使用ubuntu自带的vi来编辑文件的时候,方向键会变成ABCD,解决方法如下:

编辑 /etc/vim/vimrc.tiny ,将“set compatible”改为“set nocompatible”,在这句话的下面加上“set backspace=2”,如下:




4 分别修改三台主机的hosts文件和主机名

1、修改hosts文件

编辑hosts文件:
sudo vi /etc/hosts
1
1
[/code]

添加下面内容:
192.168.79.131 master
192.168.79.132 slave1
192.168.79.133 slave2
1
2
3
1
2
3
[/code]

这样就配置好了域名,在后面配置需要ip时我们可以直接用域名来方便地替换ip。

2、修改主机名

分别修改三台主机 /etc/hostname 的内容为master、slave1、slave2

注意主机名和hosts文件中设置的名称应当保持一致,否则会产生意外的错误

5 关闭防火墙

1、关闭命令
service iptables stop
chkconfig iptables off
1
2
1
2
[/code]

2、查看防火墙状态
service iptables status
1
1
[/code]

6 设置NTP时间同步

为了保证集群内的时间是一致的,我们可以将其中的一台主机作为时间服务器,其他主机设置定时任务每天与时间服务器同步一次时间


6.1 配置某台主机为ntp时间服务器

1、安装ntp
yum -y install ntp
1
1
[/code]

2、修改配置文件/etc/ntp.conf
#允许10.*.*.*的主机进行时间同步
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
1
2
1
2
[/code]

3、手动同步
ntpdate 0.asia.pool.ntp.org
1
1
[/code]

4、启动服务
service ntpd start
1
1
[/code]

5、开机启动
chkconfig ntpd on
1
1
[/code]


6.2 配置其他主机为ntp客户端

1、安装ntp
yum -y install ntp
1
1
[/code]

2、修改配置文件/etc/ntp.conf
#注释默认配置,添加刚刚创建的ntpserver
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.2.151
1
2
3
4
5
6
1
2
3
4
5
6
[/code]

3、安装使用定时器crontab

传送至:Linux下使用定时器crontab

4、编辑定时器任务
sudo crontab -e
1
1
[/code]

添加如下内容:
0 0 * * * /usr/sbin/ntpdate 192.168.2.151 >> /home/hadoop/logs/ntpd.log
1
1
[/code]

7 修改最大线程数

Linux默认有一个最大线程数,线程数不能超过这个值,可以使用以下命令查看:
ulimit -u
1
1
[/code]

默认是1024,hadoop集群跑任务的时候会需要同时创建很多线程,有时候会超过1024,所以最好将该参数改的大一点

1、修改文件/etc/security/limits.d/90-nproc.conf
#注释掉该行
#*          soft    nproc     1024
root       soft    nproc     unlimited
1
2
3
1
2
3
[/code]

2、修改文件/etc/security/limits.conf,添加内容:
*   soft    nproc   102400
*       hard    nproc   102400
*       soft    nofile   102400
*       hard    nofile   102400
1
2
3
4
1
2
3
4
[/code]


8 新建安装目录并更改所属用户和组

1、新建应用的安装目录
sudo mkdir -p /data/install
1
1
[/code]

2、更改该安装目录所属用户和组

例如将目录归属为trigl用户和trigl用户组:
sudo chown -R trigl:trigl /data
1
1
[/code]

对slave1和slave2做相同操作,更改用户和组以后对该目录就有了所有权限,后续输入命令不再需要加sudo了

9 安装jdk

hadoop等的搭建都依赖于jdk,所以需要先安装jdk

1、到官网下载jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html,我下载的是
jdk-7u75-linux-x64.tar.gz

2、下载好的tar包放在 /data/install/Java 目录并解压:
tar -xvf jdk-7u75-linux-x64.tar.gz
1
1
[/code]

3、配置环境变量

首先进入编辑Linux配置环境变量的文件:
sudo vi /etc/profile
1
1
[/code]

在里面添加如下内容:
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
1
2
3
1
2
3
[/code]

4、使环境变量立刻生效:
source /etc/profile
1
1
[/code]

10 配置SSH免登陆

关于为什么需要配置SSH免登陆请看这篇文章:SSH免密码登录详解,我这里仅给出具体的配置方式

1、生成SSH的公钥,命令如下,三台主机都要执行一次:
ssh-keygen -t rsa
1
1
[/code]

让输入内容直接回车即可,执行以后会在 /home/trigl/.ssh/(家目录/.ssh) 下生成id_rsa和id_rsa.pub文件

2、将主机slave1和slave2在上一步骤生成的id_rsa.pub文件传到主机master的 /home/trigl/.ssh/ 下面,为了防止覆盖,重命名为id_rsa.pub.slave1和id_rsa.pub.slave2
scp id_rsa.pub trigl@master:~/.ssh/id_rsa.pub.slave1
scp id_rsa.pub trigl@master:~/.ssh/id_rsa.pub.slave2
1
2
1
2
[/code]

3、在主机master的 /home/trigl/.ssh/ 目录下分别将id_rsa.pub、id_rsa.pub.slave1和id_rsa.pub.slave2追加到authorized_keys文件中
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys
1
2
3
1
2
3
[/code]

这样就生成了一个可以同时验证master、slave1和slave2的公钥文件

4、将上一步生成的authorized_keys文件分别传到slave1和slave2的/home/trigl/.ssh/下面
scp authorized_keys trigl@slave1:~/.ssh
scp authorized_keys trigl@slave2:~/.ssh
1
2
1
2
[/code]

5、验证

验证master连接slave1:
ssh slave1
1
1
[/code]

如果没有让输入密码且成功切换到slave1的终端,说明配置成功,验证连接slave2类似

2016.11.25更新:注意如果是在Centos系统下还需要更改文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
1
2
1
2
[/code]

11 hadoop的安装和配置

1、下载hadoop

首先到Apache官网(http://www.apache.org/dyn/closer.cgi/hadoop/common/)复制下载地址,然后进入 /data/install/apache 目录下面执行以下命令直接进行下载:
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.7.3.tar.gz[/code]1 1
[/code]

下载完成后进行解压:
tar -xvf hadoop-2.7.3.tar.gz
1
1
[/code]

2、配置hadoop

进入hadoop的配置目录:
cd /data/install/apache/hadoop-2.7.3/etc/hadoop/
1
1
[/code]

需要修改的配置文件为:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves、hadoop-env.sh、yarn-env.sh

core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/install/apache/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[/code]

hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/install/apache/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/install/apache/hadoop-2.7.3/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[/code]

yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[/code]

mapred-site.xml

通过cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml创建etc/hadoop/mapred-site.xml,内容改为如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[/code]

slaves
slave1
slave2
1
2
1
2
[/code]

hadoop-env.sh和yarn-env.sh
export JAVA_HOME=/data/install/java/jdk1.7.0_45
1
1
[/code]

配置文件修改完以后,将master下hadoop文件夹复制到slave1和slave2中
scp -r /data/install/apache/hadoop-2.7.3 trigl@slave1:/data/install/apache/
scp -r /data/install/apache/hadoop-2.7.3 trigl@slave2:/data/install/apache/
1
2
1
2
[/code]

3、运行hadoop

启动hadoop的命令都在master上执行

(1)初始化hadoop(清空hdfs数据):
rm -rf /data/install/apache/hadoop-2.7.3/hdfs/*
rm -rf /data/install/apache/hadoop-2.7.3/tmp/*
/data/install/apache/hadoop-2.7.3/bin/hdfs namenode -format
1
2
3
1
2
3
[/code]

(2)启停hdfs:
/data/install/apache/hadoop-2.7.3/sbin/start-dfs.sh
/data/install/apache/hadoop-2.7.3/sbin/stop-dfs.sh
1
2
1
2
[/code]

验证是否启动成功,在master输入 jps,应当存在namenode和secondary namenode



在slave1和slave2输入jps,应当存在datanode



进一步验证,访问:http://192.168.79.131:50070/dfshealth.html(192.168.79.131是master的ip),如图:



(3)启停yarn
/data/install/apache/hadoop-2.7.3/sbin/start-yarn.sh
/data/install/apache/hadoop-2.7.3/sbin/stop-yarn.sh
1
2
1
2
[/code]

在master输入 jps,应当存在resourcemanager



在slave1和slave2输入jps,应当存在nodemanager



访问:http://192.168.79.131:8088/cluster




12 zookeeper集群的安装配置

1、下载

http://apache.fayea.com/zookeeper/stable/下载安装包并解压:
wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.9.tar.gz[/code]1 1
[/code]

2、配置

(1)建立数据目录
mkdir /data/install/apache/zookeeper-3.4.9/data
1
1
[/code]

(2)进入conf目录创建并修改zoo.cfg文件
cp zoo_sample.cfg zoo.cfg
1
1
[/code]

修改以后的内容为:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/install/apache/zookeeper-3.4.9/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance #
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[/code]

这里还需要在数据目录/data/install/apache/zookeeper-3.4.9/data下面新建名为myid的文件,各个主机对应的内容是不同的,master的内容是0,slave1的内容是1,slave2的内容是2,分别对应server.x中的x

(3)设置环境变量:/etc/profile添加如下内容
export ZOOKEEPER_HOME=/data/install/apache/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
1
2
1
2
[/code]

别忘了source一下让环境变量生效
source /etc/profile
1
1
[/code]

3、启停zookeeper

在各个节点执行以下命令:
/data/install/apache/zookeeper-3.4.9/bin/zkServer.sh start
/data/install/apache/zookeeper-3.4.9/bin/zkServer.sh stop
1
2
1
2
[/code]

输入jps检测一下:



查看各个主机的状态:
sh bin/zkServer.sh status
1
1
[/code]



这里如果报错:
bin/zkServer.sh: 81: /data/install/apache/zookeeper-3.4.9/bin/zkEnv.sh: Syntax error: "(" unexpected (expecting "fi")
1
1
[/code]

看这篇文章的解决方法:http://blog.csdn.net/lcdcxy/article/details/50393363

13 hbase的安装和配置

1、下载

首先到http://apache.fayea.com/hbase/stable/下载稳定版安装包并解压:
wget http://apache.fayea.com/hbase/stable/hbase-1.2.2-bin.tar.gz[/code]1 1
[/code]

2、配置

主要修改conf目录下的三个文件:hbase-env.sh、hbase-site.xml、regionservers

hbase-env.sh
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export HBASE_MANAGES_ZK=true
export HBASE_LOG_DIR=/data/install/apache/hbase-1.2.2/logs
1
2
3
1
2
3
[/code]

hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[/code]

regionservers
slave1
slave2
1
2
1
2
[/code]

2016.11.25更新:还需要同步集群时间,否则有的从节点无法启动,在每个节点上运行ntp即可
ntpdate asia.pool.ntp.org
1
1
[/code]

3、启停hbase
/data/install/apache/hbase-1.2.2/bin/start-hbase.sh
/data/install/apache/hbase-1.2.2/bin/stop-hbase.sh
1
2
1
2
[/code]

master输入jps:



slave1和slave2输入jps:



访问:http://192.168.79.131:16010



4、hbase的一些基本命令
名称命令表达式
创建表create ‘表名称’, ‘列名称1’,’列名称2’,’列名称N’
添加记录put ‘表名称’, ‘行名称’, ‘列名称:’, ‘值’
查看记录get ‘表名称’, ‘行名称’
查看表中的记录总数count ‘表名称’
删除记录delete ‘表名’ ,’行名称’ , ‘列名称’
删除一张表disable ‘表名称’

drop ‘表名称’
查看所有记录scan “表名称”
首先进入hbase shell
./bin/hbase shell
1
1
[/code]

(1)创建表
creat 'test','address'
1
1
[/code]

(2)添加记录
put'test','row1','address:province','zhejiang'
put 'test','row2','address:city','hangzhou'
1
2
1
2
[/code]

(3)查看记录
get 'test','row1'
1
1
[/code]

(4)查看表中的记录总数
count 'test'
1
1
[/code]

(5)删除记录
delete 'test','row1','address'
1
1
[/code]

(6)删除一张表
disable 'test'
drop 'test'
1
2
1
2
[/code]

(7)查看所有记录
scan 'test'
1
1
[/code]

14 spark的安装和配置

1、下载

首先在http://spark.apache.org/downloads.html下载指定hadoop版本的安装包,然后解压缩

2、配置

创建并修改conf目录下的配置文件 spark-env.sh,slaves

spark-env.sh
cp spark-env.sh.template spark-env.sh
1
1
[/code]

修改内容为:
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export HADOOP_HOME=/data/install/apache/hadoop-2.7.3
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HBASE_HOME=/data/install/apache/hbase-1.2.2
#如果ssh端口非22
export SPARK_SSH_OPTS="-p 22022"
1
2
3
4
5
6
1
2
3
4
5
6
[/code]

slaves
cp slaves.template slaves
1
1
[/code]

修改内容为:
slave1
slave2
1
2
1
2
[/code]

3、启停spark
/data/install/apache/spark-2.0.0-bin-hadoop2.7/sbin/start-all.sh
/data/install/apache/spark-2.0.0-bin-hadoop2.7/sbin/stop-all.sh
1
2
1
2
[/code]

在master上输入jps:



在slave1和slave2上输入jps:



访问:http://192.168.79.131:8080/



以上,就完成了整个集群环境的搭建,详细配置文件和启停命令可以到这里下载:http://download.csdn.net/download/trigl/9629044

Men were born to be suffering, the pain of struggle, or the pain of regret?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: