作者:Gerhard_杨光辉
Linux版本:CentOS 7.2
一、准备
1.1软件版本
- hadoop-2.6.5.tar.gz
- zookeeper.3.4.10.tar.gz
- hbase1.3.1.bin.tar.gz
- geomesa-hbase_2.11-2.0.1-bin.tar.gz
- jdk-8u181-linux-x64.tar.gz
- spark-2.1.0-bin-hadoop2.7.tgz
- supermap-iserver-10.0.1-linux64.tar.gz
百度网盘软件包
提取码:zxgr
1.2网络规划
规划搭建3台机器组成集群模式,IP与计算机名分别为
192.168.30.128 master
192.168.30.129 slave1
192.168.30.130 slave2
1.3 软件包拷贝
可将上述1.1软件包拷贝到 主节点的 opt 目录下
1.4 SSH 设置
修改/etc/ssh/sshd_config 文件,将以下三项开启 yes 状态
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
重启 ssh 服务
systemctl restart sshd.service
这样 root 用户可直接登陆,以及为后续 ssh 无密码登录做准备。
scp -r /etc/ssh/sshd_config [email protected]:/etc/ssh/sshd_config
scp -r /etc/ssh/sshd_config [email protected]:/etc/ssh/sshd_config
将配置文件覆盖到另外两台机器
1.5 绑定 IP 和修改计算机名
修改/etc/hosts,添加 IP 绑定注释 127.0.1.1 绑定(不注释会影响 hadoop集群)
192.168.30.128 master
192.168.30.129 slave1
192.168.30.130 slave2
修改/etc/hostname,为绑定计算机名。(计算机名和上面 hosts 绑定名必须一致)
1.6 SSH 无密码登陆
- 用 rsa 生成密钥 (需提前安装 ssh)
ssh keygen t rsa #一路回车。
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #无密码登录本地
- 本机装有 sshcopyid 命令,可以通过
ssh-copy-id [email protected]
ssh-copy-id [email protected]
然后输入密码,在此之后可以直接 ssh[空格]机器名 进行访问,首次设置需要输入密码,第二次之后不再需要输入密码。
1.7 JDK 安装
- 将jdk安装包解压,将 JDK 环境变量配置到/etc/profile 中
export JAVA_HOME=/opt/jdk
export JRE_HOME=/opt/jdk/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
- 检查 JDK 是否配置好
source /etc/profile
java -version
- 同步jdk与配置文件
scp -r /opt/jdk root@另一台机器名:/opt/jdk
scp -r /etc/profile root@另一台机器名:/etc/profile
二、Hadoop 部署
2.1 Hadoop 安装
解压 tar zxvf hadoop2.6.5.tar.gz ,并在主目录下创建 tmp、dfs、dfs/name、
dfs/node、dfs/data
root@master:/opt/hadoop-2.6.5# mkdir tmp
root@master:/opt/hadoop-2.6.5# mkdir dfs
root@master:/opt/hadoop-2.6.5# mkdir dfs/name
root@master:/opt/hadoop-2.6.5# mkdir dfs/node
root@master:/opt/hadoop-2.6.5# mkdir dfs/data
2.2 Hadoop 配置
以下操作都在 hadoop2.6.5/etc/hadoop 下进行
2.2.1 编辑 hadoopenv.sh 文件
修改 JAVA_HOME 配置项为 JDK 安装目录
export JAVA_HOME=/opt/jdk
2.2.2 编辑 coresite.xml 文件
添加以下内容,其中 master 为计算机名,/opt/hadoop2.6.5/tmp 为手动创建的目录
fs.defaultFS
hdfs://master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
file:/opt/hadoop-2.6.5/tmp
Abasefor other temporary directories.
hadoop.proxyuser.spark.hosts
*
hadoop.proxyuser.spark.groups
*
2.2.3 编辑hdfssite.xml文件
添加以下内容其中master为计算机名,file:/opt/hadoop2.6.5/dfs/name和file:/opt/hadoop2.6.5/dfs/data为手动创建目录
dfs.namenode.secondary.http-address
master:9001
dfs.namenode.name.dir
file:/opt/hadoop-2.6.5/dfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.6.5/dfs/data
dfs.replication
3
dfs.webhdfs.enabled
true
dfs.namenode.http.address
master:50070
2.2.4 编辑mapredsite.xml文件
复制mapredsite.xml.template并重命名为mapredsite.xml 添加以下内容其中master为计算机名
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
2.2.5 编辑yarnsite.xml文件
添加以下内容其中master为计算机名
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8035
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
2.2.6 修改slaves文件,添加本机作为集群节点
master
slave1
slave2
2.3Hadoop集群搭建
hadoop配置集群,可以将hadoop内容同步到其他机器上,既2.2.12.2.6无需
在一个个配置。
scp -r /opt/hadoop-2.6.5 root@另一台机器名:/opt/hadoop-2.6.5/
2.4 Hadoop启动
- 格式化一个新的文件系统,进入到hadoop2.6.5/bin下执行:
./hadoop namenode -format
- 启动hadoop,进入到hadoop2.6.5/sbin下执行:
./start-all.sh
看到如下内容说明启动成功
-
浏览器访问http://192.168.30.128:50070/ (其中192.168.30.128为master节点IP)
能看到三个节点,则表示HBase集群搭建成功
2.4 Hadoop集群检查
检查hadoop集群,进入hadoop2.6.5/bin下执行
./hdfs dfsadmin -report
三、ZooKeeper集群部署
3.1 ZooKeeper安装
解压zookeeper3.4.10.tar.gz,并将解压后的目录名进行修改
tar -zxvf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 zookeeper
3.2 ZooKeeper配置
1.进入解压后的的zookeeper目录,创建存储数据目录zkdata
cd /opt/zookeeper
mkdir zkdata
2.进入zookeeper/conf目录,复制zoo_sample.cfg并重命名为zoo.cfg
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
3.修改zoo.cfg文件,修改dataDir为我们新创建地址,并增加其他zookeeper节点
dataDir=/opt/zookeeper/zkdata
server.1=192.168.20.122:2888:3888
server.2=192.168.20.123:2888:3888
server.3=192.168.20.124:2888:3888
- 进入zkdata目录,新建一个文件myid文件,写入标识ID即可,ID与上面server.X相匹配
cd /opt/zookeeper/zkdata
vi myid
注意:
比如我配置的三个server,myid里面写的X就是server.X=ip:2888:3888 中ip所对应的X
server.1=192.168.20.122:2888:3888【192.168.20.122服务器上面的myid填写1】
server.2=192.168.20.123:2888:3888【192.168.20.123服务器上面的myid填写2】
server.3=192.168.20.124:2888:3888【192.168.20.124服务器上面的myid填写3】
3.3 ZooKeeper集群搭建
ZooKeeper配置集群,可以将ZooKeeper内容同步到其他机器上,既无需一个个安装配置。
scp -r /opt/zookeeper root@另一台机器名:/opt/zookeeper
3.4 ZooKeeper启动
在三台机器上分别手动一个个启动ZooKeeper,进入/opt/zookeeper/bin目录
cd /opt/zookeeper/bin
./zkServer.sh start
是否启动成功,执行以下命令
./zkServer.sh status
主节点机器输出
root@master:/opt/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader
从节点机器输出
root@master:/opt/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower
启动过程命令:
./zkServer.sh start foreground
四、HBase部署
4.1 HBase安装
解压hbase1.3.1bin.tar.gz
tar -zxvf hbase-1.3.1-bin.tar.gz
4.2 HBase配置
- 进入habase的conf目录
cd /opt/hbase-1.3.1/conf
- 编辑hbaseenv.sh文件,添加Java环境变量并关闭HBase自带的Zookeeper
export JAVA_HOME=/opt/jdk/
export HBASE_MANAGES_ZK=false
- 编辑hbasesite.xml 文件,添加配置
hbase.rootdir
hdfs://master:9000/hbase
hbase.cluster.distributed
true
hbase.master
master:60000
hbase.regionserver.handler.count
100
hbase.zookeeper.quorum
master:2181,slave1:2181,slave2:2181
hbase.zoopkeeper.property.dataDir
/opt/zookeeper/zkdata
- 编辑regionservers文件,将三台机器名添加其中
root@master:/opt/hbase-1.3.1/conf# cat regionservers
master
slave1
slave2
4.3 第三方包导入
第三方包,我们只需要geomesahbase中的一个jar文件,将该jar包复制到hbase中的lib目录。
geomesahbase下载地址:https://github.com/locationtech/geomesa/releases
此次我们使用2.112.0.1版本,下载后完整包名为:geomesahbase_2.112.0.1bin.tar.gz
所使用的jar包位于geomesahbase_2.112.0.1/dist/hbase/geomesahbasedistributedruntime_2.112.0.1.jar
cd /opt/hbase-1.3.1/lib
cp /opt/geomesa-hbase-distributed-runtime_2.11-2.0.1.jar .
4.4 Hbase集群搭建
cd /opt
scp -r hbase-1.3.1 root@slave1:/opt
scp -r hbase-1.3.1 root@slave2:/opt
4.5 HBase启动
进入HBase中bin目录下,执行以下命令,完成HBase集群启动
./start-hbase.sh
4.6 检查HBase集群
浏览器访问http://192.168.30.128:16010/ (其中192.168.30.128为master节点IP)
能看到三个节点,则表示HBase集群搭建成功
五、Spark&iObjectsForSpark&objectsjava集群安装和配置
5.1安装配置
5.1.1 准备超图大数据依赖库
将【iServer目录】/support/objectsjava拷贝到/opt/objectsjava
将【iServer目录】/support/iObjectsForSpark拷贝到/opt/iObjectsForSpark
5.1.2 解压安装包
tar –xzvf spark-2.1.0-bin-hadoop2.7.tgz
mv spark-2.1.0-bin-hadoop2.7 spark
cd spark
5.1.3创建设置环境变量脚本spark-env.sh
cp conf/spark-env.sh.template conf/spark-env.sh
vim conf/spark-env.sh
增加一下配置信息:
export JAVA_HOME=/opt/jdk1.8.0_181
export UGO_HOME=/opt/objectjava
export PATH=$JAVA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$UGO_HOME/bin:$LD_LIBRARY_PATH
export SPARK_CLASS_PATH=/opt/iObjectsForSpark
5.1.4 配置Slaves
cp conf/slaves.template conf/slaves
vim conf/slaves
内容如下
master
slave1
slave2
5.2集群部署
cd /opt
scp -r spark root@机器名:/opt/
scp -r objectsjava root@机器名:/opt/
scp -r iObjectsForSpark root@机器名:/opt/
5.3启动Spark集群
cd /opt/spark/sbin/
./start-all.sh
5.4 集群检查
浏览器访问http://192.168.30.128:8080/ (其中192.168.30.128为master节点IP)
能看到三个节点,则表示HBase集群搭建成功
六、附录
6.1 Hadoop配置正确,节点显示不全
解决办法:
1.先停止Hadoop,bin/stop-all.sh
2.三台机器都把hadoop1.2.1/tmp下所有文件删除,rm -rf tmp/*
3.重新格式化DFS bin/hadoop namenode -format
4.再重启bin/start-all.sh
5.查看各节点jps,就有DataNode和TaskTracker了
6.2 修改dns
方法一 通过/etc/network/interfaces,在它的最后增加一句:
dns-nameservers 222.246.129.80
222.246.129.80是电信提供的DNS服务,这里只是举一个例子。重启后DNS就生效了,这时候再看/etc/resolv.conf,最下面就多了一行:
Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 222.246.129.80
方法二 通过修改:
/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)
在里面插入:
nameserver 222.246.129.80
6.3 修改时区时间
查看时区
timedatectl
修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
6.4 时间同步
Hbase默认的是30s这个时间差,在部署过程中时间不同步,导致集群无法启动
1.安装ntpdate工具
sudo yum -y install ntp ntpdate
2.设置系统时间与网络时间同步
sudo ntpdate cn.pool.ntp.org
3.将系统时间写入硬件时间
sudo hwclock --systohc
4.查看系统时间
timedatectl
输出信息如下:
Universal time: 四 2017-09-21 05:54:09 UTC
RTC time: 四 2017-09-21 13:54:09
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: yes
如果没有执行步骤3,则Local time与RTC time显示的值可能不一样