环境: Windows 7, VMware Workstation 10.0.2, Mac OS X 10.9 Mavericks

本文主要参考了这篇英文博客,Working OS X 10.9 Mavericks VMware Image For Windows OS and Intel Processor

前提条件:确保你的电脑支持VT-x技术,并在BIOS里启用它。

1. 下载别人做好的镜像

由于版权原因,这篇英文博客的作者不再提供下载地址了,不过google一下 “OS X Mavericks 10.9 Retail VMware Image”,可以在海盗湾找到种子,这里。用迅雷或BT客户端下载。还有一种用更快速的下载方法,用百度网盘的离线下载,把magnet链接复制粘贴到百度网盘,等百度网盘下载好了后,再用百度管家客户端下载下来。

这个文件夹里,只有OS X Mavericks 10.9 Retail VMware Image.7z是有用的额,其他小工具可以分别去下载最新的版本。

这个镜像就是别人制作好的“懒人版”,Google 搜索”OS X Mavericks VMware 懒人版”或”OS X Mavericks VMware 整合驱动版”,还可以搜到很多。

2. 给 VMware Workstation 打补丁

Windows上的VMware Workstation在安装操作系统时不支持 Mac OS X,但 VMware Fusin(VMware Workstation在Mac上的等价物,叫做 VMware Fusion)是支持了,这两个软件基本是统一软件在不同操作系统上的版本,按道理VMware Workstation也支持Mac OS X,事实上的确如此,只需要给VMware Workstation打一个补丁,就可以支持Mac OS X了。

补丁名字叫做VMware Unlocker for OS X,在这里下载

下载完后,解压,浏览到windows,以管理员权限执行 install.cmd,然后启动VMware Workstation,就可以看到变化了。

环境: CentOS 6.4

由于我的CentOS服务器上没有Nvidia的显卡,不过 caffe 是可以在CPU模式下进行train和predict的,因此我尝试了在没有GPU的情况下把caffe跑起来。

主要参考官网的文档,Installation

安装 Caffe 前需要安装以下库:

Prerequisites

  • CUDA (5.0 or 5.5)
  • Boost
  • MKL (but see the boost-eigen branch for a boost/Eigen3 port)
  • OpenCV
  • glog, gflags, protobuf, leveldb, snappy, hdf5
  • For the Python wrapper: python, numpy (>= 1.7 preferred), and boost_python
  • For the Matlab wrapper: Matlab with mex

1. 安装CUDA

wget http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-5.5-0.x86_64.rpm
sudo rpm -Uvh libgcc-4.4.7-4.el6.x86_64.rpm
yum search cuda
sudo yum install cuda

或者

wget http://developer.download.nvidia.com/compute/cuda/5_5/rel/installers/cuda_5.5.22_linux_64.run
sudo ./cuda_5.5.22_linux_64.run

2. 安装Boost

sudo yum install boost-devel

软件版本:Nutch 1.7

Nutch Plugin的所有资料,都在官网这里, PluginCentral

前提

在Eclipse里运行Nutch

Extension 和 Extension-point的关系

Extension point类似与Java语言里的接口(interface), extension 则是具体的实现(implementation)。

About Plugins里有一句话,Each extension-point defines an interface that must be implemented by the extension.

Nutch里的各种概念

Extension point, extension, plugin, 这些概念是什么意思?见 Technical Concepts Behind the Nutch Plugin System

Nutch 1.7 有哪些 Extension-point

ExtensionPoint 这个东西,本身也是一个插件,可以看看 src/plugin/nutch-extensionpoints/plugin.xml,里面定义了所有的扩展点,跟上图基本一致。

AboutPlugins这里列出来的是 Nuch 1.4的扩展点,有点过时了。

一个Nutch的组成文件

build.xml, plugins.xml 等等

Nutch 插件例子

  1. WritingPluginExample
  2. WritingPluginExample-1.2,针对Nutch 1.2的,有点老,但是值得一看
  3. Writing a plugin to add dates by Ryan Pfister

看来这3个例子,你应该就知道怎么开发插件了。

Nutch 的缺点

在抓取的过程中,真正的难度在于, ip limit 和 user limit,可惜 Nutch 对这两个问题都没有解决方案。

  1. Nutch 的 HttpPostAuthentication 现在还没有开发完,导致无法抓取需要登录的网站,例如新浪微波,豆瓣等UGC网站,都是需要登录的。没有这个HttpPostAuthentication,Nutch其实只能抓取不需要登录的网页,适用范围大打折扣,现在是web 2.0时代,真正优质的内容,几乎都是需要登录的。
  2. 多个代理的管理。Nutch 没有提供多个代理的管理功能,只能在nutch-site.xml里配置一个代理。比如我在网上抓取了几百个免费的http代理,怎么让Nutch的各个线程均匀的使用这些代理,平能自动判断代理的速度,优先选择速度高的代理呢?

下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后,总是出现这种警告:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

原因是apache官网提供的二进制包,里面的native库,是32位的,坑跌啊,现在服务器谁还有32位的啊。

$ file $HADOOP_PREFIX/lib/native/libhadoop.so.1.0.0
libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x9eb1d49b05f67d38454e42b216e053a27ae8bac9, not stripped

我们需要下载Hadoop 2.2.0源码,在 64 位Linux下重新编译,然后把32位的native库用64位的native库替换。

环境:CentOS 6.5, jdk 1.7, HBase 0.96.1.1

(可选)创建新用户,并配置好SSH无密码登录

一般我倾向于把需要启动daemon进程,对外提供服务的程序,即服务器类的程序,安装在单独的用户下面。这样可以做到隔离,运维方面,安全性也提高了。

创建一个新的group,

$ sudo groupadd hbase

创建一个新的用户,并加入group,

$ sudo useradd -g hbase hbase

给新用户设置密码,

$ sudo passwd hbase

在每台机器上创建hbase新用户,并配置好SSH无密码,参考我的另一篇博客,SSH无密码登录的配置

1. 单机模式(Standalone mode)

1.1 下载,解压

$ wget wget http://mirror.esocc.com/apache/hbase/hbase-0.96.1.1/hbase-0.96.1.1-hadoop2-bin.tar.gz
$ tar zxf hbase-0.96.1.1-hadoop2-bin.tar.gz -C ~/local/opt

1.2 hbase-env.sh

在这个文件中要指明JDK 安装在了哪里

$ echo $JAVA_HOME
/usr/lib/jvm/java
$ vim conf/hbase-env.sh

取消JAVA_HOME那一行的注释,设置正确的JDK位置

export JAVA_HOME=/usr/lib/jvm/java

1.3 修改 conf/hbase-site.xml

内容如下

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>/home/hbase/local/var/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hbase/local/var/zookeeper</value>
  </property>
</configuration>

hbase.rootdir目录是用来存放HBase的相关信息的,默认值是/tmp/hbase-${user.name}/hbasehbase.zookeeper.property.dataDir目录是用来存放zookeeper(HBase内置了zookeeper)的相关信息的,默认值是/tmp/hbase-${user.name}/zookeeper

1.4 启动

$ ./bin/start-hbase.sh
starting Master, logging to logs/hbase-user-master-example.org.out

环境:CentOS 6.5, jdk 1.7, ZooKeeper 3.4.5

本文主要参考官网的Getting Started

(可选)创建新用户

一般我倾向于把需要启动daemon进程,对外提供服务的程序,即服务器类的程序,安装在单独的用户下面。这样可以做到隔离,运维方面,安全性也提高了。

创建一个新的group,

$ sudo groupadd zookeeper

创建一个新的用户,并加入group,

$ sudo useradd -g zookeeper zookeeper

给新用户设置密码,

$ sudo passwd zookeeper

1. 单机模式(Standalone mode)

单机模式在开发和调试阶段很有用。

1.1 下载,解压

$ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
$ tar zxf zookeeper-3.4.5.tar.gz -C ~/local/opt

1.2 启动

默认就是单机模式,

$ mv conf/zoo_sample.cfg conf/zoo.cfg
$ ./bin/zdServer.sh start

1.3 使用java 客户端连接ZooKeeper

$ ./bin/zkCli.sh -server 127.0.0.1:2181

然后就可以使用各种命令了,跟文件操作命令很类似,输入help可以看到所有命令。

1.4 关闭

$ ./bin/zdServer.sh stop

2. 分布式模式(Replicated mode)

在生产环境中,要配置成分布式模式,才能发挥威力。

假设我们以名为hadoop的用户,建好了集群,见在CentOS上安装Hadoop 2.x 集群。通常,我们会把这个集群共享给多个用户,而不是让大家都登录为hadoop,这样做有几个好处:

  • 一个用户不能修改另一个用户的的文件
  • 在hadoop web管理页面,可以很方便的看到不同的用户的job

现在集群中有一台机器,上面有一个用户名为 hbase 的用户,他想要使用hadoop集群,怎么配置呢?

1. 安装hadoop客户端

1.1 下载,解压

下载跟hadoop集群一样的hadoop软件包,并解压,

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
$ tar -zxf hadoop-2.2.0.tar.gz -C ~/local/opt
$ cd ~/local/opt/hadoop-2.2.0

1.2 拷贝Hadoop集群的配置文件

将Hadoop集群的配置文件全部拷贝到客户端,相当与把集群的信息告诉客户端。

$ scp -r hadoop@localhost:~/local/opt/hadoop-2.2.0/etc/hadoop ./etc/

修改conf/mapred-site.xml中的mapreduce.cluster.local.dir,改为本机上的某个目录,确保这个目录存在且有写权限。因为这个目录是本地目录,每台机器都可以不同。例如我的是:

<property>
  <name>mapreduce.cluster.local.dir</name>
  <value>/home/soulmachine/local/var/hadoop/mapred/local</value>
</property>

确保这个目录存在,

$ mkdir -p ~/local/var/hadoop/mapred/local

环境:CentOS 6.5, OPenJDK 1.7, Hadoop 2.2.0

本文主要参考官网的文档,Hadoop 2.2.0 Single Node SetupHadoop 2.2.0 Cluster Setup

(可选)创建新用户

一般我倾向于把需要启动daemon进程,对外提供服务的程序,简单的说,就是服务器类程序,安装在单独的用户下面。这样可以做到隔离,运维方面,安全性也提高了。

创建一个新的group,

$ sudo groupadd hadoop

创建一个新的用户,并加入group,

$ sudo useradd -g hadoop hadoop

给新用户设置密码,

$ sudo passwd hadoop

1 伪分布式模式(Pseudo-Distributed Mode)

Hadoop能在单台机器上以伪分布式模式运行,即每个Hadoop模块运行在单独的java进程里。

1.1 设置SSH无密码登录localhost

先检查一下是能够无密码登录本机,

ssh localhost

如果提示输入密码,说明不能,按如下步骤设置。

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

1.2 下载已经编译好的二进制包,解压

用浏览器下载或wget,

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
$ tar -zxf hadoop-2.2.0.tar.gz -C ~/local/opt
$ cd ~/local/opt/hadoop-2.2.0

1.3 设置环境变量

$ vim ~/.bashrc
export HADOOP_PREFIX=$HOME/local/opt/hadoop-2.2.0
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

软件版本:Nutch 1.7, Hadoop 1.2.1, CentOS 6.5, JDK 1.7

前面的3篇文章中,Nutch 快速入门(Nutch 1.7)Nutch 快速入门(Nutch 2.2.1)在Eclipse里运行Nutch,Nutch都是跑在单机上,本文把Nutch部署到Hadoop集群上,在真正的分布式Hadoop集群上跑。

前提

1 启动Hadoop集群

伪分布式或真分布式的Hadoop集群都可以,无所谓。

选择一台配置好了的Hadoop客户端的机器(见Hadoop多用户的配置),作为客户机,以下操作均在这台客户机上进行。

2 下载Nutch源码

有两种方法,

  1. 去官网首页下载apache-nutch-1.7-src.tar.gz
  2. 用svn checkout

     $ svn co https://svn.apache.org/repos/asf/nutch/tags/release-1.7
    

3 把Hadoop的6个配置文件拷贝到Nutch的conf/目录

将Hadoop的六个配置文件,拷贝到Nutch的conf/目录,相当于把Hadoop集群的配置信息告诉Nutch,

假设我们以名为hadoop的用户,建好了集群,见在CentOS上安装Hadoop集群。通常,我们会把这个集群共享给多个用户,而不是让大家都登录为hadoop,这样做有几个好处:

  • 一个用户不能修改另一个用户的的文件
  • 在hadoop web管理页面,可以很方便的看到不同的用户的job

现在集群中有一台机器,上面有一个用户名为 hbase 的用户,他想要使用hadoop集群,怎么配置呢?

1. 安装hadoop客户端

1.1 下载,解压

下载跟hadoop集群一样的hadoop软件包,并解压,

$ wget http://mirror.olnevhost.net/pub/apache/hadoop/common/stable1/hadoop-1.2.1-bin.tar.gz
$ tar -zxf hadoop-1.2.1-bin.tar.gz -C ~/local/opt
$ cd ~/local/opt/hadoop-1.2.1

1.2 配置

在客户端只需配置集群namenode 和 jobtracker 的相关信息, 把namenode和jobtracker的信息告诉客户端即可。

把hadoop用户下的conf/core-site.xmlconf/mapred-site.xml拷贝到本用户的conf/目录下

$ scp hadoop@localhost:~/local/opt/hadoop-1.2.1/conf/core-site.xml ./conf/
$ scp hadoop@localhost:~/local/opt/hadoop-1.2.1/conf/mapred-site.xml ./conf/

修改conf/mapred-site.xml中的mapred.local.dir,改为本机上的某个目录,确保这个目录存在且有写入。因为这个目录是本地目录,每台机器都可以不同。例如我的是:

<property>
  <name>mapred.local.dir</name>
  <value>/home/soulmachine/local/var/hadoop/mapred/local</value>
</property>

确保这个目录存在,

$ mkdir -p ~/local/var/hadoop/mapred/local