hadoop1.2.1+hbase0.94.11+nutch2.2.1+elasticsearch0.90.5安装配置攻略
一、背景
最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es。这几样神器的作用就不多作介绍了,自行参考各类百科就行了。我选择这样的方案主要是基于以下考虑:
1、可扩展,虽然只是实验环境,但是以后在项目中是要应用到生产中的,随着数据量的增大,需要的硬件设备能够方便的加入进来,所以选择了分布式的方案中最具人气的hadoop+hbase组合
2、数据来源兼容,nutch2以后集成了gora和tika,可以方便的进行数据ORM和分析
3、与时俱进,es很火嘛,而且各种评测说es比solr更快更稳定,虽然没有自己测试过,但是跟随github大牛们的脚步总不会错得太离谱
二、前言
这一部分纯粹吐槽,国内的好多技术博客不是停留在nutch1X阶段,就是各种不负责任的抄袭转载,某几位先驱说这几样东西版本必须一对一兼容,然后所有人都这样去做,没有一点探索精神和质疑精神。今天,我就做第一个吃螃蟹的人,谁说gora0.3只能配hbase0.92,谁说nutch2只能配es0.19,既然开源的大牛们放出了稳定最新版,就一定有能兼容的道理!
三、安装与配置过程(伪分布式)
整个实验环境采用伪分布式模式搭建,也就是只有一台master的分布式环境,以后扩展只需要继续配置slaver就可以了。 系统为ubuntu server 12.04
hadoop1.2.1
hadoop安装的前提是java和ssh免密码登陆配置,这个不多说了,基本的,jdk1.6和1.7都可以。
1、官网的stable目录里面下载hadoop1.2.1的deb包
2、安装hadoop的deb包
1
|
sudo dpkg -i /home/hadoop/hadoop_1.2.1-1_x86_64.deb
|
3、查看安装的位置
1
|
whereis hadoop
|
输出:
1
|
hadoop: /usr/bin/hadoop /etc/hadoop /usr/etc/hadoop /usr/bin/X11/hadoop /usr/include/hadoop /usr/share/hadoop
|
这里面/etc/hadoop目录是hadoop的各种配置文件,/usr/share/hadoop则是hadoop的主要jar包和监控页面的东西
4、下面开始修改配置文件:
hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- file system properties -->
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name</value><!-- value里填写运行hadoop的账户能够访问的目录 -->
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data</value><!-- value里填写运行hadoop的账户能够访问的目录 -->
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>
|
mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:54311</value>
<!-- 如果是完全分布式模式,localhost要替换为master的内网ip地址,端口随意,注意避开端口冲突 -->
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
</configuration>
|
core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>
|
hadoop-env.sh
修改java路径
1
|
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
|
修改pid路径为hadoop运行账户能访问到的路径,默认是/var/run/hadoop,如果不是sudo组的化是没权限的,而且每次重启都会清空这个目录,用chown无法起到长期作用。
1
2
|
export HADOOP_PID_DIR=/home/hadoop/run/hadoop
export HADOOP_SECURE_DN_PID_DIR=/home/hadoop/run/hadoop
|
masters和slaves
如果是伪分布式,直接localhost,如果是完全分布式,masters填写master的ip地址,slaves填写slave的ip地址,回车隔开
至此基本的配置已经完毕,如果想了解更多配置内容可以参考这篇文章《hadoop三个配置文件的参数含义说明》
5、启动hadoop
先格式化namenode
1
|
hadoop namenode -format
|
然后启动
1
|
start-all.sh
|
=============================================
hbase0.94.11
1、官网stable目录下下载hbase0.94.11的tar包并解压
1
|
tar -zxvf hbase-0.94.11.tar.gz
|
2、去conf目录修改hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:54310/hbase</value><!-- 端口号和ip地址要与hadoop配置参数fs.default.name一致 -->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
</configuration>
|
3、修改hbase-env.sh文件
添加如下三行:
1
2
3
4
5
|
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/
export HBASE_CLASSPATH=/etc/hadoop
export HBASE_MANAGES_ZK=true
|
至此配置文件修改结束(如果完全分布式还要修改regionservers),更多配置参数和调优可以参考这篇文章《HBase入门篇3-hbase 配置文件参数设置及优化》
4、替换hadoop的jar文件
hbase0.94.11默认支持的是hadoop1.0.4,我们可以用替换hadoop-core的方式让其支持hadoop1.2.1
1
2
3
4
|
rm /home/hadoop/hbase-0.94.11/lib/hadoop-core-1.0.4.jar
cp /usr/share/hadoop/hadoop-core-1.2.1.jar /home/hadoop/hbase-0.94.11/lib
cp /usr/share/hadoop/lib/commons-collections-3.2.1.jar /home/hadoop/hbase-0.94.11/lib
cp /usr/share/hadoop/lib/commons-configuration-1.6.jar /home/hadoop/hbase-0.94.11/lib
|
5、启动hbase
1
|
/home/hadoop/hbase-0.94.11/bin/start-hbase.sh
|
6、用jps命令看是否运行正常
输出为:
1
2
3
4
5
6
7
8
9
|
2032 NameNode
13764 HQuorumPeer
29069 Jps
2630 JobTracker
2280 DataNode
13889 HMaster
2535 SecondaryNameNode
2904 TaskTracker
14180 HRegionServer
|
注意这几个东西一个都不能少,如果有什么少了,一定要去日志里看看是怎么回事。
7、尝试运行hbase命令
1
2
3
4
5
6
7
8
|
/home/hadoop/hbase-0.94.11/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.90.4, r1150278, Sun Jul 24 15:53:29 PDT 2011
hbase(main):001:0> list
TABLE webpage
1 row(s) in 0.5270 seconds
|
如果不报错,说明已经配置成功
==================================================================
ElasticSearch0.90.5
这里不像一般的博客那样先安装nutch,而是先安装es,为什么,因为逻辑上来讲,nutch是一个爬虫加集成器,es被nutch集成,所以先安装es,这在思想上叫做由零到整。
1、官网下载es0.90.5的deb安装包并安装
1
|
sudo dpkg -i /home/hadoop/elasticsearch/elasticsearch-0.90.5.deb
|
2、查看安装了哪些东西
1
|
whereis elasticsearch
|
输出:
1
|
elasticsearch: /etc/elasticsearch /usr/share/elasticsearch
|
其中/etc/elasticsearch目录里面的elasticsearch.yml文件是比较重要的配置文件,这里我们使用默认配置,不做修改,需要特殊配置的同学可以参考这篇文章《分布式搜索elasticsearch配置文件详解》。
而/usr/share/elasticsearch里面则是es主要的执行文件和jar包了
3、检查es运行状态
es安装好后就默认开启了,貌似关闭只能杀死进程,启动的话直接输入命令elasticsearch即可。
使用curl来检查es的cluster的运行状态,并获得clustername
1
|
curl -XGET 'localhost:9200/_cluster/health?pretty'
|
如果获得以下输出,表示成功了
1
2
3
4
5
6
7
8
9
10
11
12
|
{
"cluster_name" : "elasticsearch",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 5,
"active_shards" : 10,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
|
======================================================================
nutch2.2.1
1、官网下载tar包并解压
2、修改源码
这里要吐槽下nutch的开源大牛们,这么明显的bug你就发出版本来了,而且几个版本都不改,如果你有你的道理,你应该文档说明一下好吧,为毛我都找不到你们的正式说明?
进入src/java/org/apache/nutch/crawl目录,修改GeneratorJob.java中的public Map<String,Object> run(Map<String,Object> args) 方法。
添加以下三行
1
2
3
4
|
// generate batchId
int randomSeed = Math.abs(new Random().nextInt());
String batchId = (curTime / 1000) + "-" + randomSeed;
getConf().set(BATCH_ID, batchId);
|
1
|
cp /home/hadoop/hbase-0.94.11/conf/hbase-site.xml /home/hadoop/nutch2.2.1/conf/
|
1
2
3
4
5
6
7
8
9
|
<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.hbase.store.HBaseStore</value>
<description>Default class for storing data</description>
</property>
<property>
<name>http.agent.name</name>
<value>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36</value><!-- 这个随意填,我填了我chrome浏览器的UA -->
</property>
|
1
2
|
<dependency org="org.apache.gora" name="gora-hbase" rev="0.3"
conf="*->default" />
|
1
2
|
<dependency org="org.elasticsearch" name="elasticsearch" rev="0.19.4"
conf="*->default"/>
|
1
|
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
|
1
|
hadoop fs -copyFromLocal urls /home/hadoop/urls
|
1
|
bin/nutch inject /home/hadoop/urls
|
1
2
3
4
|
bin/nutch generate -topN 10
bin/nutch fetch -all
bin/nutch parse -all
bin/nutch updatedb
|
1
|
bin/nutch elasticindex <cluster name> -all
|
1
|
curl -XGET 'http://localhost:9200/_search?content=tianya'
|
hadoop1.2.1+hbase0.94.11+nutch2.2.1+elasticsearch0.90.5安装配置攻略的更多相关文章
- 谁说他们版本不兼容——hadoop1.2.1+hbase0.94.11+nutch2.2.1+el
一.背景 最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es.这几样神器的作用就不多作介绍了,自行参考各 ...
- Ubuntu环境下Hadoop1.2.1, HBase0.94.25, nutch2.2.1各个配置文件一览
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
- 使用ycsb对hbase0.94.11 benchmark
Ycsb下载地址:https://github.com/brianfrankcooper/YCSB/releases 目前测试hbase0.94.11,因此下载ycsb-0.1.4.tar.gz 1. ...
- (四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子
本篇先介绍HBase在伪分布式环境下的安装方式,然后将MapReduce编程和HBase结合起来使用,完成WordCount这个例子. HBase在伪分布环境下安装 一. 前提条件 已经成功地安装 ...
- 伪分布式hadoop1.1.2和hbase0.94.11配置
Hadoop 1.1.2 和Hbase 0.94.11版本配置 测试时ip 172.19.32.128 这个版本需要把/etc/hosts的aa-vm改成127.0.0.1,也就是和localhos ...
- hadoop1.2.1+hbase0.90.4+nutch2.2.1+elasticsearch0.90.5配置(伪分布式)
系统:ubuntu14.04 一.hadoop安装 ssh免密码登陆详情见上一篇博客. 解压hadoop1.2.1到某个目录下,这里解压到ubuntu下载目录下(注意没必要使用管理员权限) 在hado ...
- hbase0.94.11版本和hbase1.4.9版本的benchamark区别
1.起初使用ycsb对hbase进行benchmark,分别在100%写的情况下检测写性能:在100%读的情况下检测读的性能.实验数据如下: 2.新版本的habse写性能竟然不如老版本.!!!.于是我 ...
- MySql 8.0.11 在win10下的zip非安装配置
在win10使用mysql8.0.11的zip包进行配置时,搜到的教程很多坑,特此总结成功配置的方法. 1.下载非安装的zip包 mysql 8.0.11 64位 2.解压zip包 将下载的zi ...
- 伪分布式hbase从0.94.11版本升级stable的1.4.9版本
Hbase从0.94.11升级到stable的1.4.9版本: 升级思路: hadoop1.1.2 hbase 0.94.11 ↓ had ...
随机推荐
- keil里面填数据
编译后寄存器和堆栈的内存数据可以直接写进去的. 寄存器,双击就可以,注意里面是十六进制 堆栈,也是十六进制,八位的 00 00 00 00 ,但这个是从右到左的,比如0x00000006 应该填 06 ...
- 2.redis配置
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 ...
- MPEG-2码流结构分析
MPEG2视频编码定义在 ISO/IEC13818-2中,MPEG2 video sequence如下图所示 我们可以借助Elecard Stream Analyer工具来分析MPEG2视频码流 MP ...
- Zabbix 监控页面中文乱码
问题描述: 如题,我相信大多数人都遇到过这个问题,Zabbix 监控图 中文乱码. 解决这个问题也很简单:( Zabbix 网页目录中缺少字体 ) 1.打开 Windows 的 C:\Windows\ ...
- JS中如何获取当前时间及让时间格式化
JS中获取当前时间和JAVA里获取当前时间一样,都是直接new Date即可.不同的是,JS中用var date=new Date();JAVA中用Data data=new Date();注:JS中 ...
- overflow与underflow
是新近的firefox浏览器中支持overflow, underflow这两个事件,当某一元素的大小超出父元素的显示范围就会触发overflow事件,如果从超出显示再变回不超出的状态则触发underf ...
- 学习ios一段过程后的思考
现在回想起来,学习ios也有一段时间了,大概三个月不到吧,本来是搞linux驱动,刚开始来公司就我一个人负责驱动的东西,主要就是一些bug的解决,后来系统基本上稳定了,我就闲下来了,公司又有些移动医疗 ...
- Python与Go斐波那契数列
#!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li ...
- Convert Sorted Array to Binary Search Tree数组变成高度平衡的二叉树
[抄题]: Given an array where elements are sorted in ascending order, convert it to a height balanced B ...
- 第一个Django应用程序_part3
一.概述 此文延续第一个Django应用程序part2. 官方文档:https://docs.djangoproject.com/en/1.11/intro/tutorial03/ view是Djan ...