R Hadoop 安装和使用

Author:Lishu
Date: 2013-10-23

Weibo: @maggic_rabbit

       最近接了一个project要使用R Hadoop,这才零零散散开始学习R和Hadoop,在这里记录下我学习和安装过程中遇到的问题和解决办法。我搭建的环境是14台server,全部安装Ubuntu Server 12. 04 LTS,关于系统重装这里就不赘述了。我的目标是搭建一个14台机器的Hadoop cluster,并装上R Hadoop。

1. Hadoop 的安装

       关于Hadoop有太多open resource可以利用,这里我用的是O‘Reilly出版的 Hadoop: The Definitive Guide, 3rd Edition. 这本书应该有相应的中文版,正如书名所说,这是最官方最全面的guide,里面基本上对Hadoop方方面面都有讲解。

       关于Hadoop的安装,请参考书的Appendix A 和Chapter 9. 或者这个tutorial.

Running Hadoop on Ubuntu Linux (Single-Node Cluster)

Running Hadoop on Ubuntu Linux (Multi-Node Cluster)


具体步骤如下:

1.预安装

每台机器都需要Java和SSH,对于每台机器都需要做以下事情:

  • 预装Java:
$ sudo apt-get install openjdk-7-jdk

或查看Java版本:

$ java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (Ice(IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

  • 安装设置SSH:

$ sudo apt-get install ssh
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  # 生成无密码的RSA key
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  # 添加 public key 到 authorized_keys 以允许访问
$ ssh localhost  # 测试是否装成功
理论上来说应该在每台机器上都生成一个RSA key,然后把 public key 添加到其它机器的 authorized_keys,这里为简化这个过程,我在每台机器上都使用了同样的RSA key pair, 即大家都用相同的钥匙去开相同的锁,但是这样是存在安全隐患的。

  • 设置 /etc/hosts:

127.0.0.1       localhost
#127.0.1.1      serv20
10.11.8.27      serv07
10.11.8.34      serv08
10.11.8.42      serv09
10.11.8.44      serv10
10.11.8.48      serv11
10.11.8.47      serv12
10.11.8.49      serv13
10.11.8.51      serv14
10.11.8.52      serv15
10.11.8.55      serv16
10.11.8.53      serv17
10.11.8.36      serv18
10.11.8.54      serv19
10.11.8.56      serv20
注意,我的14台机器 hostname 叫 serv07~20, 这里以 serv20 为例,添加每台机子的IP,并必须注释掉原本的 127.0.1.1, 否则在运行Hadoop时会出现类似这样的错误:

2013-09-03 15:29:04,374 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-09-03 15:29:05,375 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-09-03 15:29:06,376 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-09-03 15:29:07,376 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-09-03 15:29:08,377 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-09-03 15:29:09,377 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: serv20/127.0.1.1:54310. 
Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)

如果设置正确,你应该能从每台机器上直接用 hostname SSH:

$ ssh serv19 # instead of ssh 10.11.8.54

2. 安装设置Hadoop

Apache Hadoop Releases 下载所需Hadoop版本,我使用的是Hadoop 1.2.1 (stable).

  • 解压:

$ tar xzf hadoop-1.2.1.tar.gz

  • 设置环境变量:

$ export HADOOP_HOME=/home/hadoop/hadoop-1.2.1 # 这里我的用户名叫hadoop
$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
$ export PATH=$PATH:$HADOOP_HOME/bin
注意,这里想 permanent 设置的话需要在~/.bashrc里面修改,这是个 shell startup file,通常都在 user home directory 下面。如果 home directory 没有的话可以从 root 拷贝过来:
$ sudo cp /root/.bashrc ~

修改完 .bashrc 文件需要重新加载,或者重新登陆:
$ source ~/.bashrc

  • 设置 conf/hadoop-env.sh ,添加以下行:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true   # disable IPv6

注意,虽然环境变量里已经设置过 JAVA_HOME, 在Hadoop里还需要再设置一下,否则会找不到 java.

  • 设置 conf/core-site.xml
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值