计算机系统应用教程网站

网站首页 > 技术文章 正文

三、Hadoop-Hbase-ElasticSearch(ES)-Janusgraph环境搭建

btikc 2024-10-26 08:40:36 技术文章 5 ℃ 0 评论

1、java环境安装

[root@VM1 ~]# tar -zxf jdk-8u201-linux-x64.tar.gz -C /usr/local/

[root@VM1 ~]# ln -sv /usr/local/jdk1.8.0_201 /usr/local/jdk

[root@VM1 ~]# vim /etc/profile.d/java.sh

[root@VM1 ~]# . /etc/profile.d/java.sh

[root@VM1 ~]# cat /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2、hadoop安装

2.1 配置说明

本次集群搭建共一台机器

VM1

192.168.1.1

DataNode、NameNode、SecondaryNameNode

2.2安装(2.3.4和2.3.6这里可以跳过)

[root@VM1 ~]# tar -zxf hadoop-2.8.5.tar.gz -C /usr/local/

[root@VM1 ~]# ln -sv /usr/local/hadoop-2.8.5 /usr/local/hadoop

2.3配置

2.3.1添加环境变量

[root@VM1 ~]# vim /etc/profile.d/hadoop.sh

[root@VM1 ~]# cat /etc/profile.d/hadoop.sh

HADOOP_HOME=/usr/local/hadoop

PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

export PATH

[root@VM1 ~]# . /etc/profile.d/hadoop.sh

2.3.2 core-site.xml

[root@VM1 hadoop]# cp core-site.xml{,.bak}

[root@VM1 hadoop]# cat core-site.xml

<configuration>

<!-- 指定HDFS(namenode)的通信地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://VM1:9000</value>

</property>

<!-- 指定hadoop运行时产生文件的存储路径 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/data/hdfs/tmp</value>

</property>

</configuration>

2.3.3 hdfs-site.xml

[root@VM1 hadoop]# cp hdfs-site.xml{,.bak}

[root@VM1 hadoop]# cat hdfs-site.xml

<configuration>

<!-- 设置namenode的http通讯地址 -->

<property>

<name>dfs.namenode.http-address</name>

<value>VM1:50070</value>

</property>

<!-- 设置secondarynamenode的http通讯地址 -->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>VM1:50090</value>

</property>

<!-- 设置namenode存放的路径 -->

<property>

<name>dfs.namenode.name.dir</name>

<value>/data/hdfs/nn</value>

</property>

<!-- 设置secondarynamenode存放的路径 -->

<property>

<name>fs.checkpoint.dir</name>

<value>/data/hdfs/snn</value>

</property>

<property>

<name>fs.checkpoint.edits.dir</name>

<value>/data/hdfs/snn</value>

</property>

<!-- 设置hdfs副本数量 -->

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<!-- 设置datanode存放的路径 -->

<property>

<name>dfs.datanode.data.dir</name>

<value>/data/hdfs/dn</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>

2.3.4 mapred-site.xml

[root@VM1 hadoop]# cp mapred-site.xml.template mapred-site.xml

[root@VM1 hadoop]# cat mapred-site.xml

<configuration>

<!-- 通知框架MR使用YARN -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.application.classpath</name>

<value>

/usr/local/hadoop/etc/hadoop,

/usr/local/hadoop/share/hadoop/common/*,

/usr/local/hadoop/share/hadoop/common/lib/*,

/usr/local/hadoop/share/hadoop/hdfs/*,

/usr/local/hadoop/share/hadoop/hdfs/lib/*,

/usr/local/hadoop/share/hadoop/mapreduce/*,

/usr/local/hadoop/share/hadoop/mapreduce/lib/*,

/usr/local/hadoop/share/hadoop/yarn/*,

/usr/local/hadoop/share/hadoop/yarn/lib/*

</value>

</property>

</configuration>

2.3.5 yarn-site.xml

[root@VM1 hadoop]# cp yarn-site.xml{,.bak}

[root@VM1 hadoop]# cat yarn-site.xml

[root@VM1 hadoop]# hdfs namenode -format

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>VM1</value>

</property>

<property>

<description>The http address of the RM web application.</description>

<name>yarn.resourcemanager.webapp.address</name>

<value>${yarn.resourcemanager.hostname}:8088</value>

</property>

<property>

<description>The address of the applications manager interface in the RM.</description>

<name>yarn.resourcemanager.address</name>

<value>${yarn.resourcemanager.hostname}:8032</value>

</property>

<property>

<description>The address of the scheduler interface.</description>

<name>yarn.resourcemanager.scheduler.address</name>

<value>${yarn.resourcemanager.hostname}:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>${yarn.resourcemanager.hostname}:8031</value>

</property>

<property>

<description>The address of the RM admin interface.</description>

<name>yarn.resourcemanager.admin.address</name>

<value>${yarn.resourcemanager.hostname}:8033</value>

</property>

</configuration>

2.3.6 master文件&&ssh认证

[root@VM1 hadoop]# echo 'VM1' >> /usr/local/hadoop/etc/hadoop/masters

[root@VM1 hadoop]# echo 'VM1' >> /usr/local/hadoop/etc/hadoop/slaves

[root@VM1 hadoop]# ssh-keygen

[root@VM1 hadoop]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@VM1

2.3.7创建目录

[root@VM1 hadoop]# mkdir /data/hdfs/{nn,snn,dn} -pv

###要以普通用户启动,还需要修改目录权限

下面内容需要新加:

启动脚本文件全部位于 /usr/local/hadoop/sbin 文件夹下:
(1)修改 start-dfs.sh stop-dfs.sh 文件添加:

HDFS_DATANODE_USER=clsn

HADOOP_SECURE_DN_USER=hdfs

HDFS_NAMENODE_USER=clsn

HDFS_SECONDARYNAMENODE_USER=clsn

(2)修改start-yarn.sh 和 stop-yarn.sh文件添加:

YARN_RESOURCEMANAGER_USER=clsn

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=clsn

2.3.8格式化&&启动

[root@VM1 ~]# hdfs namenode -format

[root@VM1 ~]# start-all.sh

[root@VM1 ~]# jps

2.3.9 web界面

http://192.168.1.1:50070/dfshealth.html#tab-overview

http://192.168.1.1:8088/cluster/nodes

节省服务器资源:yarn不需要启动

[root@VM1 ~]# stop-all.sh

[root@VM1 ~]# hadoop-daemon.sh start namenode

[root@VM1 ~]# hadoop-daemon.sh start datanode

[root@VM1 ~]# hadoop-daemon.sh start secondarynamenode

3、hbase安装

3.1 安装

[root@VM1 ~]# ls hbase-2.3.2-bin.tar.gz

[root@VM1 ~]# tar -zxf hbase-2.3.2-bin.tar.gz -C /usr/local/

[root@VM1 ~]# ln -sv /usr/local/hbase-2.3.2 /usr/local/hbase

3.2 配置环境变量

[root@VM1 ~]# vim /etc/profile.d/hbase.sh

[root@VM1 ~]# cat /etc/profile.d/hbase.sh

HBASE_HOME=/usr/local/hbase

PATH=$HBASE_HOME/bin:$PATH

export PATH

3.3 hbase-site.xml

[root@VM1 conf]# cp hbase-site.xml{,.bak}

[root@VM1 conf]# cat hbase-site.xml

<property>

<name>hbase.rootdir</name>

<!-- hbase存放数据目录 -->

<value>hdfs://VM1:9000/hbase/hbase_db</value>

<!-- 端口要和Hadoop的fs.defaultFS端口一致-->

</property>

<property>

<name>hbase.cluster.distributed</name>

<!-- 是否分布式部署 -->

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<!-- zookooper 服务启动的节点,只能为奇数个 -->

<value>VM1</value>

</property>

<property>

<!--zookooper配置、日志等的存储位置,必须为以存在 -->

<name>hbase.zookeeper.property.dataDir</name>

<value>/data/hbase/zookeeper</value>

</property>

<property>

<!--hbase web 端口 -->

<name>hbase.master.info.port</name>

<value>16610</value>

</property>

注意:

zookeeper有这样一个特性:

集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。

也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;

同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;

再多列举几个:2->0 ; 3->1 ; 4->1 ; 5->2 ; 6->2 会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper

3.4 regionservers && 创建目录

[root@VM1 conf]# cat regionservers

VM1

[root@VM1 conf]# mkdir -pv /data/hbase/zookeeper

3.5 hbase-env.sh

# 添加一行

. /etc/profile

3.6 启动HBASE

[root@VM1 bin]# start-hbase.sh

3.7 验证

[root@VM1 logs]# hdfs dfs -ls / #hdfs上面会默认创建一个文件当作hbase的数据库的目录

web界面:

http://192.168.1.1:16610/master-status

3.8 启动客户端

[root@VM1 logs]# hbase shell

hbase(main):001:0> create 'clsn','cf'

hbase(main):002:0> list #查看hbase 所有表

#put一条记录到表clsn,rowkey 为 1000000000,放到 name列上

hbase(main):003:0> put 'clsn','1000000000','cf:name','clsn'

#put一条记录到表clsn,rowkey 为 1000000000,放到sex列上

hbase(main):004:0> put 'clsn','1000000000','cf:sex','male'

#put一条记录到表clsn,rowkey 为 1000000000,放到age列上

hbase(main):005:0> put 'clsn','1000000000','cf:age','24'

hbase(main):007:0> get 'clsn','cf'

hbase(main):008:0> get 'clsn','1000000000'

4、janusgraph安装

4.1 解压

[root@VM1 ~]# unzip janusgraph-full-0.5.2

[root@VM1 ~]# mv janusgraph-full-0.5.2 /usr/local/

[root@VM1 ~]# ln -sv /usr/local/janusgraph-full-0.5.2 /usr/local/janusgraph

4.2 配置环境变量

[root@VM1 janusgraph]# cat /etc/profile.d/janusgraph.sh

JANUSGRAPH_HOME=/usr/local/janusgraph

PATH=$JANUSGRAPH_HOME/bin:$JANUSGRAPH_HOME/elasticsearch/bin:$PATH

export PATH

[root@VM1 janusgraph]# . /etc/profile.d/janusgraph.sh

4.3 ElasticSearch组件安装

ElasticSearch的安装包在JanusGraph的安装包中已经包含了,因此不需要单独下载。但需要注意,自带的安装包只能以非root用户启动。

4.3.1启动ElasticSearch服务

[root@VM1 janusgraph]# useradd elasticsearch

[root@VM1 janusgraph]# chown elasticsearch -R ./

[root@VM1 janusgraph]# su elasticsearch

[elasticsearch@VM1 janusgraph]$ nohup elasticsearch/bin/elasticsearch &

4.3.2 外部ES

janusgraph/elasticsearch/config/elasticsearch.yml中配置监听的外部IP地址,例如:

network.host: 0.0.0.0

修改了IP地址之后,启动可能会提示失败需要修改内容。在/etc/sysctl.conf文件末尾增加如下一行:

vm.max_map_count=262144

保存后,执行"sudo sysctl -p"让配置立即生效。可以通过如下命令查看是否生效:

sudo sysctl -a|grep vm.max_map_count

4.3.3 JanusGraph-jar包

到这里JanusGraph就算装完成,是否觉得有些奇怪的是JanusGraph并没有启动什么进程服务之类的。这是因为JanusGraph本身就是一些Jar包,并没有什么服务。这里引出一个话题:访问JanusGraph数据的方式,也就是嵌入式和Gremlin-Server方式。嵌入式的方式就是直接通过JanusGraph的jar包去存取,只需要设定后端存储的IP地址即可。Gremlin-Server提供了一种RESTful接口的方式。

为了保证JausGraph+HBase+ElasticSearch环境搭建的完整性,这里将Gremlin-Server也搭建好。

注意:Gremlin-Server是在Tinkerpop中的叫法,在JanusGraph被成为JanusGraph Server。

4.4 配置JanusGraph Server

JanusGraph Server的默认配置分为两部分:

janusgraph-cassandra-es-server.properties

gremlin-server.yaml

4.4.1 janusgraph-hbase-es-server.properties

[root@VM1 ~]# cd /usr/local/janusgraph/conf/gremlin-server/

[root@VM1 gremlin-server]# cp janusgraph-cassandra-es-server.properties janusgraph-hbase-es-server.properties

[root@VM1 gremlin-server]# mv janusgraph-cassandra-es-server.properties{,.bak}

修改存储和索引类型

将原来的存储类型由cassandrathrift改为hbase,如下:

storage.backend=hbase

如果你的hbase不在本地,还需要修改storage.hostname。其他关键配置想还包括索引,如下:

index.search.backend=elasticsearch

index.search.hostname=127.0.0.1

如果你的配置不同,也需要一并修改。

4.4.2 gremlin-hbase-es-server.yaml

[root@VM1 gremlin-server]# cp gremlin-server.yaml gremlin-hbase-es-server.yaml

[root@VM1 gremlin-server]# vim gremlin-hbase-es-server.yaml

修改channelizer

channelizer是关系访问gremlin-server的方式,它提供了WebSocket和Http两种方式,默认只配置了WebSocket,

即org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer。这里可以改为同时支持两种方式,如下:

channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer

配置graphs

原有配置为:graph: conf/gremlin-server/janusgraph-cql-es-server.properties,如下改为如下:

graph: conf/gremlin-server/janusgraph-hbase-es-server.properties

这里的graph就是你的向Gremlin-Server发送Gremlin查询语言时可以使用的图实例对象。它指向了实例化该图实例的配置文件,就是开始配置的那个文件。

4.4.3 gremlin-server.sh

[root@VM1 bin]# vim /usr/local/janusgraph/bin/gremlin-server.sh

默认:JANUSGRAPH_YAML=$JANUSGRAPH_CFG/gremlin-server.yaml替换为

JANUSGRAPH_YAML=$JANUSGRAPH_CFG/gremlin-hbase-es-server.yaml

echo 输出打印的也改一下。

4.4.4 启动gremlin-server

[root@VM1 config]# gremlin-server.sh start

#用hbase客户端查看数据库是否创建

[root@VM1 config]# hbase shell

hbase(main):001:0> list

客户端连接:

[root@VM1 config]# gremlin.sh

gremlin> :remote connect tinkerpop.server conf/remote.yaml

gremlin> :> g.V().count()

gremlin> graph = JanusGraphFactory.open('conf/janusgraph-hbase-es.properties')

gremlin> g = graph.traversal()

gremlin> g.V().count()

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表