网站首页 > 技术文章 正文
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()
猜你喜欢
- 2024-10-26 读图数据库实战笔记01_初识图 图数据库查询
- 2024-10-26 (一)图数据库概览第一讲 图数据库教程
- 2024-10-26 一、图数据库系统简介 图数据库原理是什么
- 2024-10-26 「图」完全托管的图形数据库服务Amazon Neptune上线
- 2024-10-26 (十四) JanusGraph 索引管理 索引图英文翻译
- 2024-10-26 (十六) JanusGraph部署架构 jgrapht
- 2024-10-26 (十) JanusGraph事务机制 事务型结构数据流图的特点是
- 2024-10-26 (十一) JanusGraph配置化及部分运维能力说明
- 2024-10-26 (十三) JanusGraph 本体管理高级特性
- 2024-10-26 浅谈图数据库 图数据库原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)