这是我第一次写博客,多多指教
一、环境要求:
①linux系统(我这里是centos6.8)
②jdk(我这里安装的Java1.8_131版本)
③hadoop平台(我这里使用的cdh搭建的,hive版本为1.1.0)
二、安装es
①下载es安装包,去官网下载,zip或者tar.gz后缀的都行。我下载的是elasticsearch-5.6.3.zip
②解压:unzip elasticsearch-5.6.3.zip
③创建ES用户和组(创建elsearch用户组及elsearch用户),因为使用root用户执行ES程序,将会出现错误;所以这里需要创建单独的用户去执行ES 文件;命令如下:
命令一:groupadd elsearch
命令二:useradd elsearch -g elsearch
命令三:chown -R elsearch:elsearch elasticsearch-5.6.3
④创建ES数据文件和日志文件,使用root用户
命令一:mkdir /data
命令二:chown -R elsearch:elsearch /data/
命令三:su - elsearch 切换用户
命令四:mkdir -p es/data
命令五:mkdir -p es/logs
⑤修改ES配置文件,使用cd命令进入到config 文件下,执行 vi elasticsearch.yml 命令
设置es集群名称:
设置节点名称:
设置数据和日志路径:
设置当前节点的ip和端口(建议配置host后使用主机名):
再设置以下两个:
在最后增加(貌似配置了这个head插件才能获取到es的状态):
⑥使用elsearch用户执行ES文件,su - elsearch。进入到bin 目录下执行 ./elasticsearch 命令就可以了,执行 ./elasticesrarch -d 是后台运行
可能遇到的报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 需要修改系统变量的最大值,使用root用户执行以下几条命令:
打开系统配置文档:vi /etc/sysctl.conf
尾部增加并保存:vm.max_map_count=655360
最后执行:sysctl -p
再次执行es文件,报错解决!
⑦浏览器打开或者使用curl ‘http://自己配置的IP地址:9200/’,出现json格式的一串信息,表示es配置好了并且启动成功!
三、安装head
①下载head安装包,下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip
②解压
③执行head 插件,需要node.js 的支持,所以,下面先安装node.js
④地址: https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
⑤解压 node.js安装包
⑥配置node.js的环境变量:vi /etc/profile
⑦查看node版本和npm版本:node -v
⑧安装grunt(grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等工作,elasticsearch-head插件就是通过grunt启动的)。
npm install -g grunt-cli
查看版本:grunt -version
⑨修改elasticsearch-head-master文件下的Gruntfile.js文件中,添加一行”hostname: ‘0.0.0.0’,”配置后所有ip都能访问,生产环境有需求的就指定ip
⑩ 修改 vim _site/app.js 文件:修改head的连接地址,改为安装head插件的主机ip,如图所示(ps:不好找):
修改完成后后执行:grunt server &
回到elasticsearch-5.6.3/bin目录再重新执行:./elasticsearch
使用浏览器访问:当前主机ip地址:9100
此图是我配置了集群之后的,单节点的话就只显示一个主机,下面开始配置集群:
四、es集群配置
①cd 进入elasticsearch-5.6.3/config
vi elasticsearch.yml
修改以下两个属性
第一个填所有节点的主机名,未配置host就填ip,第二个按提示 节点数/2 + 1
②然后将elasticsearch-5.6.3整个分发到其它各个节点,使用scp命令就行
依次登录其它节点,先创建es的用户以及创建数据和日志文件夹,和上面的操作一样
③然后修改elasticsearch.yml中的node.name和network.host
④然后依次运行各节点的es ./elasticsearch
最后浏览器进入安装了head_master的ip:9100,便能够看到各个节点都运行成功了
五、elasticsearh-hadoop整合:
①下载elasticsearch-hadoop-5.6.3.jar
网址:http://jcenter.bintray.com/org/elasticsearch/elasticsearch-hadoop/5.6.3/elasticsearch-hadoop-5.6.3.jar
②将jar包拷贝到每个节点hive的默认lib目录,
打开hive时带上jar包:
例如:hive -hiveconf hive.aux.jars.path=/opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/hive/lib/elasticsearch-hadoop-5.6.3.jar
③将数据导入es
hive建两张表:
create table table_hive
(
a typeA,
b typeB
)
row format delimited fields terminated by ‘\t’
collection items terminated by ‘,’
map keys terminated by ‘:’
lines terminated by ‘\n’;
create external table table_es
(
a typeA,
b typeB
)
STORED BY ‘org.elasticsearch.hadoop.hive.EsStorageHandler’
TBLPROPERTIES(‘es.resource’ = ‘radiott/artiststt’,’es.index.auto.create’ = ‘true’,’es.nodes’ = ‘es节点ip’,’es.port’ = ‘端口,默认9200’);
在table_hive中准备数据,然后直接将数据插入table_es
insert overwrite table table_es
select * from table_hive;
等待跑完mapreduce便可以在es查到数据了
最后:es查询语法,emmm。。。再抽时间去了解吧,貌似有人做出来sql转es语句的小工具,有时间去找个好用的。还有es的优化,有没大佬提供点儿好资料的,感激!