为了后续的操作便利,安装vim文本编辑器(参数y代表用yes回答安装过程中的所有问题)
yum -y install vim*
对vim做一些基本的配置,打开vim的配置文件(ubuntu下路径可能为/etc/vim/vimrc)
sudo vim /etc/vimrc
在配置文件末添加如下内容并保存
set nu "在左侧显示行号
set tabstop=4 "tab 长度设置为 4
set nobackup "覆盖文件时不备份
set ruler "在右下角显示光标位置的状态行
set autoindent "自动缩进
为了后续通过rz上传sz下载文件,安装lrzsz
yum -y install lrzsz
为了后续的安装包解压,安装unzip
yum install -y unzip
添加用户hhje并设置密码(来自hadoop、hbase、janusgraph、elasticsearch的首字母)
useradd -m hhje -s /bin/bash
passwd hhje
为了后续的操作便利,为其添加权限
在root用户下,打开/etc/sudoers文件
vim /etc/sudoers
并在“root ALL=(ALL) ALL”一行后添加如下内容并保存
hhje ALL=(ALL) ALL
centos自带ssh相关组件,这里为了后续的操作便利,配置ssh的本地免密登录
首先,通过ssh本地登录并退出(以生成~/.ssh目录)
ssh localhost
exit
然后,进入相应目录,生成密钥,添加密钥到授权文件,修改授权文件权限
cd ~/.ssh/
ssh-keygen -t rsa # 不断回车即可
cat id_rsa.pub >> authorized_keys
$chmod 600 ./authorized_keys
到此就算配置完成了,不过在centos下本地免密登录可能仍不成功,可尝试执行如下命令(注意其中路径应与实际所建用户名保持对应):
chmod g-w /home/hhje
chmod 700 /home/hhje/.ssh
chmod 600 /home/hhje/.ssh/authorized_keys
上传java安装包至/home/hhje目录下
解压到当前目录
在/etc/profile末行处添加如下java环境变量
export JAVA_HOME=/home/hhje/java/jdk1.8.0_171
export JRE_HOME=/home/hhje/java/jdk1.8.0_171/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
使变量配置立即生效
source /etc/profile
考虑到后续的hadoop启动,额外在~/.bashrc中首行处添加如下环境变量
export JAVA_HOME=/home/hhje/java/jdk1.8.0_171
立即生效
source ~/.bashrc
测试java安装配置是否成功
java -version
上传hadoop安装包至/home/hhje目录下
解压缩即可完成安装
sudo tar -zxf ~/hadoop-2.7.6.tar.gz
重命名解压所得文件夹为hadoop
sudo mv ./hadoop-2.7.6/ ./hadoop
修改文件夹权限(注意命令应与实际用户名对应)
sudo chown -R hhje:hhje ./hadoop
进入/home/hhje/hadoop目录并测试是否安装成功
./bin/hadoop version
首先配置hadoop的环境变量
vim ~/.bashrc
向其中添加如下变量(注意HADOOP_HOME路径应与实际用户名对应)
export HADOOP_HOME=/home/hhje/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
立即生效
source ~/.bashrc
伪分布式模式有两个配置文件需要修改,即/home/hhje/hadoop/etc/hadoop/目录下的core-site.xml和hdfs-site.xml
对于core-site.xml,向如下configuration块
中添加如下内容
hadoop.tmp.dir
file:/home/hhje/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
同理,对于hdfs-site.xml,向configuration块中添加如下内容
dfs.replication
1
dfs.namenode.name.dir
file:/home/hhje/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/home/hhje/hadoop/tmp/dfs/data
到此配置就完成了
首次启动前,需先执行NameNode的格式化,在/home/hhje/hadoop/目录下执行
./bin/hdfs namenode -format
若执行正常,应能看到“successfully formatted” 和 “Exitting with status 0”的字串被打印
然后启动NaneNode 和 DataNode 守护进程,在/home/hhje/hadoop/目录下执行
./sbin/start-dfs.sh
若启动正常,则执行
jps
命令应该可以看到NaneNode、DataNode、SecondaryNameNode三个进程,到此hadoop就算成功启动了。
更详细的hadoop安装配置参考教程见文末处。
下载Hbase 1.3.1安装包
需要注意的是,Hbase 1.3.1安装包lib目录下的hadoop相关jar包的版本号都是2.5.1,不处理的话hbase跑在hadoop2.7.6上可能会报错,因此需要用hadoop 2.7.6中的相应jar包替换掉它们。
注,在hadoop 2.7.6中能找到除了hadoop-client-2.5.1.jar以外的其余hadoop相关jar包的2.7.6版,而对于hadoop-client-2.5.1.jar,其实其中并没有Class文件,实测不替换或者从安装包中删去都可。
向~/目录(即上文的/home/hhje/)上传经上述操作后与hadoop版本对齐了的Hbase 1.3.1安装包
解压缩
重命名
类似配置java的环境变量,向/etc/profile行末添加如下变量
export HBASE_HOME=/home/hhje/hbase
立即生效
source /etc/profile
修改文件权限,进入{HBASE_HOME}目录
chown -R hhje:hhje ./
chmod -R 755 ./
编辑{HBASE_HOME}/conf/hbase-env.sh文件,取消下述变量的注释并配置之
export JAVA_HOME=/home/hhje/java/jdk1.8.0_171 (自己的JAVA_HOME主目录)
export HBASE_LOG_DIR=${HBASE_HOME}/logs(hbase日志目录)
export HBASE_MANAGES_ZK=true(启用hbase自带的zookeeper)
编辑{HBASE_HOME}/conf/hbase-site.xml文件,添加如下内容
hbase.rootdir
hdfs://localhost:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
localhost
zookeeper.znode.parent
/hbase
应先启动hadoop再启动hbase,关闭时则先关hbase
进入{HBASE_HOME},执行
bin/start-hbase.sh #启动hbase
若正常启动,则可用jps命令观察到新增了HRegionServer、HMaster、HQuorumPeer三个进程
关闭hbase可执行
bin/stop-hbase.sh #停止hbase
可进入hbase shell模式并列出所有的表
bin/hbase shell #进入shell模式(使用jps可以观察到多出了一个Main进程)
hbase(main):002:0> list #列出所有表
上传janusgraph安装包并解压,重命名解压所得文件夹为janusgraph
进入janusgraph目录
从一个janusgraph的fresh环境(如刚解压出来的)开始,若要janusgraph server按自定配置启动(主要是为了启用ConfiguredGraphFactory类),步骤如下:
cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/socket-gremlin-server.yaml
在socket-gremlin-server.yaml中:
host的0.0.0.0不用改,可能需要修改port号——指定一个未占用的port(如50050)供server监听,视情况可能需要使用iptables -I INPUT -p tcp --dport 50050 -j ACCEPT命令允许外部对该端口的访问,并/usr/sbin/iptables-save保存该配置
添加graphManager:
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
并在graphs项中添加ConfigurationManagementGraph键及其值,如:
graphs: {
blablabla【这是表示“省略”的修辞,不要照搬...】,
ConfigurationManagementGraph: conf/gremlin-server/socket-jg-hbase_fyk-server-configraph.properties
}
注意,若graphs里有多个图的话,若在相应配置文件中指定不同表名,则storage backend会建立对应的多个表。
修改scriptEvaluationTimeout值为原值的十倍即300000,以避免启动过程因超时而断开连接
准备好上述ConfigurationManagementGraph的properties文件(可以按后端环境复制conf目录下的类似文件并修改,如conf下的janusgraph-cassandra-configurationgraph.properties),文件内容如下:
gremlin.graph=org.janusgraph.core.ConfiguredGraphFactory
graph.graphname=ConfigurationManagementGraph
storage.backend=hbase
storage.hostname=127.0.0.1
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
希望在server启动时便加载的janusgraph图实例如graph1的配置文件模板可以用conf目录下的janusgraph-hbase.properties或janusgraph-hbase-es.properties,graph1的配置文件内容如下例:
gremlin.graph=org.janusgraph.core.JanusGraphFactory
graph.graphname=graph1
storage.backend=hbase
storage.hostname=127.0.0.1
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
这时就可以执行如下命令以启动janusgraph server了
nohup bin/gremlin-server.sh ./conf/gremlin-server/socket-gremlin-server.yaml &
关闭server的命令为./bin/janusgraph.sh stop,注意该命令会关闭所有名为GremlinServer的进程。
远程访问janusgraph server的客户端启动步骤如下:
cp ./conf/remote.yaml ./conf/remote-local.yaml
./bin/gremlin.sh
gremlin> :remote connect tinkerpop.server conf/remote-local.yaml session
==>Configured 10.10.18.143/10.10.18.143:50050
gremlin> :remote console
==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:50050]-[bace1161-f5d8-4a06-aa49-5ff6051befb6] - type ':remote console' to return to local mode
graph1.traversal().V().drop()
graph1.traversal().E().drop()
graph1.tx().commit()
graph1.close()
JanusGraphFactory.drop(graph1)
Tinkerpop本身并不支持正则表达式。若要在janusgraph图实例上建立混合索引(mixed index)来为图上的查询操作提供对模糊匹配,正则表达式匹配等特性的支持,则需要配置并启动elasticsearch的服务,具体见下述。
janusgraph包自带与其兼容的完整的ElasticSearch包,伪分布式环境下无需另行下载安装es。
与配置图实例的存储后端为hbase类似,这里配置图实例的索引后端为es,仍以janusgraph图实例graph1为例,其.properties配置文件内容应如下例:
gremlin.graph=org.janusgraph.core.JanusGraphFactory
graph.graphname=graph1
storage.backend=hbase
storage.hostname=127.0.0.1
index.search.backend=elasticsearch
index.search.hostname=127.0.0.1
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
到此图实例中关于es的配置就算完成了
要注意的是,上例中index.search.backend和index.search.hostname里的“search”是用户为该索引后端指定的代称(因为有时项目所用的索引后端不止一个),在添加混合索引(mixed index)时需要将希望使用的索引后端的自定义代称传递给JanusGraph的ManagementSystem系列API,例如
mgmt = graph1.openManagement()
idCard = mgmt.getPropertyKey('idCard')
mgmt.buildIndex('byIdCardMixed', Vertex.class).addKey(idCard, Mapping.STRING.asParameter()).buildMixedIndex("search")
description = mgmt.getPropertyKey('description')
mgmt.buildIndex('byDescriptionMixed', Vertex.class).addKey(description, Mapping.STRING.asParameter()).buildMixedIndex("search")
mgmt.commit()
graph1.tx().commit()
//Wait for the index to become available
mgmt = wgraph.openManagement()
mgmt.awaitGraphIndexStatus(wgraph, 'byIdCardMixed').call()
mgmt.awaitGraphIndexStatus(wgraph, 'byDescriptionMixed').call()
mgmt.commit()
wgraph.tx().commit()
直接进入janusgraph自带的elasticsearch目录并执行如下命令即可启动es。要注意的是,既然已经配置了janusgraph server的索引后端为es,则启动时应先启动es服务再启动janusgraph server服务,此理同样适用于存储后端hbase。
./bin/elasticsearch
参es官方文档
可使用curl命令测试es服务是否成功启动
curl ‘http://localhost:9200/?pretty’
正常情况下返回应如下例:
{
"name" : "Tom Foster",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.0",
"build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
"build_timestamp" : "2015-11-18T22:40:03Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
到此es便启动成功,可以启动janusgraph server并尝试mixed index了
(分享作者的一些爬坑经验,待更新)
Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
——很详细且新手友好的hadoop安装教程,本文也多有参考,在此向作者“给力星”致谢