3

RHadoop 实践系列之一: Hadoop 环境搭建

 3 years ago
source link: https://cosx.org/2013/03/rhadoop1-hadoop/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

RHadoop 实践系列之一: Hadoop 环境搭建

关键词:hadoop; java; rhadoop; R 语言; 海量数据

RHadoop 实践系列文章

RHadoop 实践系列文章,包含了 R 语言与 Hadoop 结合进行海量数据分析。Hadoop 主要用来存储海量数据,R 语言完成 MapReduce 算法,用来替代 Java 的 MapReduce 实现。有了 RHadoop 可以让广大的 R 语言爱好者,有更强大的工具处理大数据 1G, 10G, 100G, TB, PB。 由于大数据所带来的单机性能问题,可能会一去不复返了。

RHadoop 实践是一套系列文章,主要包括 “Hadoop 环境搭建”,“RHadoop 安装与使用”,“R 实现 MapReduce 的算法案例”,“HBase 和 rhbase 的安装与使用”。对于单独的 R 语言爱好者,Java 爱好者,或者 Hadoop 爱好者来说,同时具备三种语言知识并不容 易。此文虽为入门文章,但 R,Java,Hadoop 基础知识还是需要大家提前掌握。

第一篇 Hadoop 环境搭建部分

分为 3 个章节:

  • Haddop 环境准备
  • Hadoop 完全分步式集群搭建
  • HDFS 测试

每一章节,都会分为 “文字说明部分” 和“代码部分”,保持文字说明与代码的连贯性。

Haddop 环境准备

文字说明部分:

首先环境准备,这里我选择了 Linux Ubuntu 操作系统 12.04 的 64 位版本,大家可以根据自己的使用习惯选择顺手的 Linux。

但 JDK 一定要用 Oracle SUN 官方的版本,请从官网下载,操作系统的自带的 OpenJDK 会有各种不兼容。JDK 请选择 1.6.x 的版本,JDK1.7 版本也会有各种的不兼容情况。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

完全分步式的 Hadoop 集群,这个选择 5 台一样配置的虚拟机,通过内网的一个 DNS 服务器,指定 5 台虚拟机所对应的域名。

每台虚拟机,1G 内存,系统硬盘 2G,外接硬盘 16G。hadoop 会存储在外接硬盘上面。

外接硬盘,需要先进行格式化,然后创建目录,再 mount 到操作系统,通过修改 / etc/fstab 配置,系统每次重起都是自动加载外接硬盘。

(如果用户操作系统的硬盘够大,不用外接硬盘,这步可以省略)

接下来,为 hadoop 集群创建访问账号 hadoop,创建访问组 hadoop,创建用户目录 / home/hadoop,把账号,组和用户目录绑定。

再为 hadoop 的 hdfs 创建存储位置 / hadoop/conan/data0,给 hadoop 用户权限。

设置 SSH 自动登陆,从 nn.qa.com 虚拟机开始,通过 ssh-keygen 命令,生成 id_rsa.pub,再合并到 authorized_keys 的文件。再通过 scp 把 authorized_keys 复制到其他的虚拟机。循环生成 authorized_keys 并合并文件。使得 5 台虚拟机,都有了相互的 SSH 自动登陆的配置。

环境准备完成,参考下面代码部分,动手实现。

代码部分:

1. 操作系统 Ubuntu 12.04 x64

~ uname -a
Linux domU-00-16-3e-00-00-85 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

2. JAVA 环境

~ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

3. Hadoop 集群:5台机器,1个 NameNode,4个 DataNode, 通过 DNS 指定域名

虚拟机名字   域名     内存  硬盘
namenode:  nn.qa.com   1G  2G+16G
datanode1: dn0.qa.com 1G  2G+16G
datanode2: dn1.qa.com  1G  2G+16G
datanode3: dn2.qa.com  1G  2G+16G
datanode4: dn3.qa.com  1G  2G+16G

挂载硬盘 16G

mkfs.ext4 -j /dev/xvdb
mkdir /hadoop
mount /dev/xvdb /hadoop
vi /etc/fstab
    
#   /dev/xvdb /hadoop ext4 noatime 0 1

创建 hadoop 账号和组

groupadd hadoop
useradd hadoop -g hadoop;
passwd hadoop
mkdir /home/hadoop
chown -R hadoop:hadoop /home/hadoop

创建 hadoop 工作目录

mkdir /hadoop/conan/data0
chown -R hadoop:hadoop /hadoop/conan/data0

配置 ssh 及密码

nn.qa.com:

su hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
cat id_rsa.pub >> authorized_keys
scp authorized_keys dn0.qa.com:/home/hadoop/.ssh/

dn0.qa.com:

su hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
cat id_rsa.pub >> authorized_keys
scp authorized_keys dn1.qa.com:/home/hadoop/.ssh/

dn1.qa.com:

su hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
cat id_rsa.pub >> authorized_keys
scp authorized_keys dn2.qa.com:/home/hadoop/.ssh/

dn2.qa.com:

su hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
cat id_rsa.pub >> authorized_keys
scp authorized_keys dn3.qa.com:/home/hadoop/.ssh/

dn3.qa.com:

su hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
cat id_rsa.pub >> authorized_keys
scp authorized_keys nn.qa.com:/home/hadoop/.ssh/

nn.qa.com:

su hadoop
cd /home/hadoop/.ssh/
scp authorized_keys dn0.qa.com:/home/hadoop/.ssh/
scp authorized_keys dn1.qa.com:/home/hadoop/.ssh/
scp authorized_keys dn2.qa.com:/home/hadoop/.ssh/
scp authorized_keys dn3.qa.com:/home/hadoop/.ssh/

Hadoop 完全分步式集群搭建

文字说明部分:

说明:本文以 hadoop-0.20.2 为例,与系列中其他几篇文章中的 hadoop-1.0.3 版本,安装和配置上是一样。

首先,我们在 namenode(nn.qa.com) 节点上面,下载 hadoop。

修改 hadoop 配置文件 hadoop-env.sh,hdfs-site.xml,core-site.xml,mapred-site.xml,设置 master 和 slaves 节点

把配置好的 namenode(nn.qa.com) 节点,用 scp 复制到其他 4 台虚拟机同样的目位置。

启动 namenode(nn.qa.com) 节点,

第一次启动时要先进行格式化,bin/hadoop namenode -format

启动 hadoop,bin/start-all.sh

输入 jps 命令,可以看到所有 Java 的系统进程。 只要下面三个系统进程出现,SecondaryNameNode,JobTracker,NameNode,就恭喜你 hadoop 启动成功。

通过 netstat -nl,可以检查系统打开的端口。其中包括,hdfs 的 9000,jobtracker 的 9001,namenode 的 web 监控的 50070,Map/Reduce 的 web 监控的 50030

其他的节点的测试检查是一样的,在这里就不重复说明了。

代码部分:

下载及配置 hadoop

nn.qa.com:

cd /hadoop/conan
wget http://mirror.bjtu.edu.cn/apache/hadoop/common/hadoop-0.20.2/hadoop-0.20.2.tar.gz
tar zxvf hadoop-0.20.2.tar.gz
cd /hadoop/conan/hadoop-0.20.2/conf
vi hadoop-env.sh
export JAVA_HOME=/etc/java-config-2/current-system-vm
vi hdfs-site.xml  
 
    <configuration>
     <property>
      <name>dfs.data.dir</name>
      <value>/hadoop/conan/data0</value>
     </property>
     <property>
      <name>dfs.replication</name>
      <value>2</value>
     </property>
    </configuration>
    
vi core-site.xml 
    
    <configuration>
     <property>
      <name>fs.default.name</name>
      <value>hdfs://nn.qa.com:9000</value>
     </property>
    </configuration>

vi mapred-site.xml
    
    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>nn.qa.com:9001</value>
    </property>
    </configuration>
    
vi masters
    
    nn.qa.com
    
vi slaves
    
    dn0.qa.com
    dn1.qa.com
    dn2.qa.com
    dn3.qa.com

同步 hadoop 配置到其他虚拟机

cd /hadoop/conan
scp -r ./hadoop-0.20.2 dn0.qa.com:/hadoop/conan
scp -r ./hadoop-0.20.2 dn1.qa.com:/hadoop/conan
scp -r ./hadoop-0.20.2 dn2.qa.com:/hadoop/conan
scp -r ./hadoop-0.20.2 dn3.qa.com:/hadoop/conan

启动 namenode 节点

cd /hadoop/conan/hadoop-0.29.2
bin/hadoop namenode -format
bin/start-all.sh

检查 hadoop 启动是否成功

jps 
9362 Jps 
7756 SecondaryNameNode 
7531 JobTracker 
7357 NameNode

netstat -nl 
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8649 0.0.0.0:* LISTEN
tcp6 0 0 :::50070 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::39418 :::* LISTEN
tcp6 0 0 :::32895 :::* LISTEN
tcp6 0 0 192.168.1.238:9000 :::* LISTEN
tcp6 0 0 192.168.1.238:9001 :::* LISTEN
tcp6 0 0 :::50090 :::* LISTEN
tcp6 0 0 :::51595 :::* LISTEN
tcp6 0 0 :::50030 :::* LISTEN
udp 0 0 239.2.11.71:8649 0.0.0.0:*

HDFS 测试

文字说明部分:

hadoop 环境启动成功,我们进行一下 hdfs 的简单测试。

通过命令在 hdfs 上面,创建一个目录bin/hadoop fs -mkdir /test

通过命令复制一个本地文件到 hdfs 文件系统中,bin/hadoop fs -copyFormLocal README.txt /test

通过命令查看刚刚上传的文件bin/hadoop fs -ls /test

代码部分:

nn.qa.com:

cd /hadoop/conan/hadoop-0.29.2
bin/hadoop fs -mkdir /test
bin/hadoop fs -copyFormLocal README.txt /test
bin/hadoop fs -ls /test 

Found 1 items 
-rw-r--r--      2 hadoop supergroup     1366 2012-08-30 02:05  /test/README.txt

最后,恭喜你完成了,hadoop 的完成分步式安装,环境成功搭建。

继续学习,请看第二篇 RHadoop 实践系列文章之 RHadoop 安装与使用。

注:由于两篇文章并非同一时间所写,hadoop 版本及操作系统,分步式环境都略有不同。

两篇文章相互独立,请大家在理解的基础上动手实验,不要完成依赖两篇文章中的运行命令。

敬告各位友媒,如需转载,请与统计之都小编联系(直接留言或发至邮箱:[email protected]),获准转载的请在显著位置注明作者和出处(转载自:统计之都),并在文章结尾处附上统计之都微信二维码。

统计之都微信二维码

← RHadoop 实践系列之二:RHadoop 安装与使用 第六届 R 语言会议开始报名 →

发表 / 查看评论


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK