hadoop1.1.2+hbase0.92.2+nutch2.2.1+solr4.6.1配置全记录

    花了两天时间,总算把这些东西弄好了,环境是vmware9虚拟机上的Ubuntu12.04_x86版。做了个简单的测试,跑通了。不过还是有很多不明白的地方,后期再陆续记录。

    目前楼主配的是单机模式,分布式模式中遇到的问题以后再做记录。

    另外强烈的吐槽一下,有些版本的在官网上面都找不到,搜了好久找到了某论坛资源,下载还要积分,郁闷。我想说的是其实所有的版本都可以在这个地址上下载: http://archive.apache.org/dist/ ,那些要积分的真无语,本来这东西就是开源的嘛~


1.hadoop1.1.2安装配置

参考网址:

http://book.51cto.com/art/201110/298538.htm 第二章(这里有个错误,2.1.3小节中的bin/Hadoop NameNode -format中NameNode要小写:namenode

http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html ,这个是官网入门教程,建议全部看一遍。

1.1安装配置环境

去官网下载java1.6,修改/etc/profile,配置环境变量:

# for java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.6   #这里是楼主的java目录,你要改成你下载的java目录
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH  
配置ssh免密码登陆,不然你每次启动hadoop都要输入用户密码,很烦的。先安装ssh

sudo apt-get install ssh 

首先查看用户文件夹下是否存在.ssh文件夹(注意ssh前面有“.”,这是一个隐藏文件夹),楼主的用户文件名为ling,所以输入命令:

ls -a /home/ling
如果没有的话就自己建个.ssh文件夹。然后输入:

ssh-keygen -t dsa -P '' -f /home/ling/.ssh/id_dsa

ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型;dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。这个命令会在.ssh文件夹下创建两个文件id_dsa及id_dsa.pub,这是SSH的一对私钥和公钥,类似于钥匙及锁,把id_dsa.pub(公钥)追加到授权的key里面去。接下来这把公钥加到用于认证的公钥文件中:

cat /home/ling/.ssh/id_dsa.pub >> /home/ling/.ssh/authorized_keys 
这里的authorized_keys是用于认证的公钥文件。至此无密码登录本机已设置完毕。验证是否安装成功:

ssh -version 

楼主显示如下,木有问题:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
Bad escape character 'rsion'.
然后输入:

ssh localhost 

然后键入yes,hadoop安装前的环境就配好啦!

1.2安装hadoop

修改conf/hadoop-env.sh,指定你的jdk路径:

 export JAVA_HOME=/usr/lib/jvm/jdk1.6

修改conf/core-site.xml:

<configuration>
<!--这里配置的是HDFS的地址和端口号-->
    <property> 
        <name>fs.default.name</name> 
        <value>hdfs://localhost:9000</value> 
    </property>
</configuration>
修改conf/hdfs-site.xml:

<configuration>
<!--HDFS的配置,备份方式默认为3,在单机版的Hadoop中,需要将其改为1-->
    <property> 
        <name>dfs.replication</name> 
        <value>1</value> 
    </property> 
</configuration>
修改conf/mapred-site.xml:

<configuration>
<!--MapReduce的配置文件,配置的是JobTracker的地址和端口-->
    <property> 
        <name>mapred.job.tracker</name> 
        <value>localhost:9001</value> 
    </property> 
</configuration>

接下来进入hadoop文件夹下执行下面命令,格式化文件系统:

bin/hadoop namenode -format

至此配置完成,接下来启动hadoop:

bin/start-all.sh

打开浏览器,输入下列网址,如果都能查看,说明安装成功。

    http://localhost:50030 (MapReduce的Web页面)  
    http://localhost:50070 (HDFS的Web页面) 

1.3.问题记录

    由于楼主是在虚拟机中做的,每次重启之后要重新format格式化文件系统,不然是运行hadoop后是启动不了localhost:50070的,估计是虚拟机重启时要重新格式化文件系统为Ubuntu默认的,目前楼主想到的是每次不关闭ubuntu,而是选择suspend,下次开VM直接唤醒就行了,如有其他解决方案,还麻烦分享一下~


2.hbase0.92.2集成

有关hbase详细,参考官方文档:http://abloz.com/hbase/book.html,以下是hbase与hadoop版本配套使用表,可供参考:

hadoop1.1.2+hbase0.92.2+nutch2.2.1+solr4.6.1配置全记录

S代表支持,X代表不支持,NT代表没有充分测试,但是可以用。楼主用的是hadoop1.1.2+hbase0.92.2。

2.1.修改配置文件

修改hbase目录下的conf/hbase-env.sh,主要是改java路径:

# Set environment variables here.

# The java implementation to use.  Java 1.6 required.
export JAVA_HOME=/usr/lib/jvm/jdk1.6
如果你要将hbase和zookeeper集成的话还要将HBASE_MANAGES_ZK设为false,楼主只用hbase所以设置成true:
export HBASE_MANAGES_ZK=true

配置conf/hbase-site.xml:

<configuration>
<property>
    <name>hbase.rootdir</name>
	<value>hdfs://localhost:9000/hbase</value>
    </property>

<!--

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>localhost:60000</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
-->
</configuration>
单机模式下只需要配置hbase.rootdir即可,注释掉的大家可以先无视。。。
至此配置完毕执行bin/start-all.sh和bin/stop-all.sh可开启和关闭hbase服务。

2.2问题记录

1.楼主在关闭hbase的时候好慢有木有!网上查了下,说是直接stop-all.sh很慢,要先执行bin/hbase-daemon.sh stop master,然后执行bin/stop-hbase.sh。

2.运行bin/hbase shell创建表的时候出现了org.apache.hadoop.hbase.PleaseHoldException: Master is initializing....的错误,要修改你的/etc/hosts文件

127.0.0.1 localhost
127.0.0.1 ubuntu.ubuntu-domain ubuntu
该问题的详细描述见官网:http://hbase.apache.org/book/quickstart.htm

3.nutch2.2.1配置

参考:http://blog.csdn.net/skywalker_only/article/category/1842591

3.1.ant编译

nutch2.2.1需要自己编译,在nutch主目录下执行ant命令(如果没有ant自己apt-get安装一个),第一次可能要编译很长时间,耐心等待,下次就会很快了。

如果你最后看到了build success那么恭喜你了,如果build faild,那就看输出的错误信息,也可以看一下我的问题记录。

编译成功之后nutch下面会多出build和runtime文件夹。如果你的nutch配置的是本机模式,那么你要关心一下runtime下的local文件夹了,因为本机模式的配置文件都在local的conf下面。

3.2.与hbase集成

配置ivy/ivy.xml,由于要使用hbase来存储,所以找到下面这一行,并去掉原有的注释使之生效:

<dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />

配置conf/gora.properties,设置gora后台用hbase做存储:

gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

配置conf/nutch-site.xml:

<property>
     <name>storage.data.store.class</name>
     <value>org.apache.gora.hbase.store.HBaseStore</value>
</property>
<property>
     <name>http.agent.name</name>
     <value>NutchCrawler</value>
 </property>
 <property>
     <name>http.robots.agents</name>
     <value>NutchCrawler,*</value>
 </property>


然后再执行ant重新编译一遍,配置完成!


3.3.问题记录

1.编译时出现请求超时,连接失败什么的信息,可以修改ivy/ivysettings.xml下的url路径,找到下面这一行:
<property name="repo.maven.org" value="http://repo1.maven.org/maven2/" override="false"/>

将其中的value值替换为http://mirrors.ibiblio.org/maven2/。(编译完成后记得改回来)

2.由于我们用的是hbase0.92.2,而gora依赖的是0.90版的,所以要把hbase0.92目录下的两个jar包复制到nutch的lib下面(本机模式是rumtime/local/lib,分布式模式是deploy文件夹下那个apache-nutch2.2.1.job压缩包里面的lib),还要把原来的hbase-0.90.x的jar包给删掉,不然会报错。



4.solr配置



1.官网上下载最新版本(楼主的是4.6.1)
2.由于nutch和solr默认的依赖是solr 3.x, 需要在schema.xml中将其替换为solr 4.x:
Nutch2.x自带的shema-solr.xml中少了一个_version_ field字段,将以下内容加到<!-- core fileds -->的boost filed之后
将nutch/runtime/local/conf目录下的schema-solr4.xml里面的内容复制到当前目录的schema.xml里面
将nutch/runtime/local/conf目录下的schema-solr4.xml里面的内容复制到$SOLR_HOME/example/solr/collection1/conf/schema.xml
浏览器输入以下地址,验证配置是否正确:
http://localhost:8983/solr/#/


5集成测试



1.依次启动hadoop,hbase,nutch,solr。
2.在nutch目录下的runtime/local/bin/下面执行nutch的crawl命令进行网页抓取:有两中方法:
批处理命令: bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 10
单步执行命令:
bin/nutch inject urls
bin/nutch generate -topN 10
bin/nutch fetch -all
bin/nutch parse -all
bin/nutch updatedb
bin/nutch  solrindex http://localhost:8983/solr/  -reindex


各个命令参数的说明见官网:bin/nutch命令说明

上一篇:【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)


下一篇:windows CA的几点记录小结