公司Commerce Cloud平台上提供申请主机的服务。昨天试了下,申请了3台机器,搭了个hadoop环境。以下是机器的一些配置:

emi-centos-6.4-x86_64
medium | 6GB 内存| 2 虚拟内核 | 30.0GB 盘

3个机器的主机和ip规划如下:

IP地址           主机名    用途

192.168.0.101  hd1     namenode
192.168.0.102  hd2     datanode
192.168.0.103  hd3     datanode

一、系统设置

(所有步骤都需要在所有节点执行)

1. 修改主机名及ip地址解析

1) 修改主机名

[root@hd1 toughhou]# hostname hd1

[root@hd1 toughhou]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hd1

2) 增加ip和主机映射

[root@hd1 toughhou]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.101 hd1
192.168.0.102 hd2
192.168.0.103 hd3

3) 验证是否成功

[toughhou@hd1 ~]$ ping hd2
PING hd2 (192.168.0.102) () bytes of data.
bytes from hd2 (192.168.0.102): icmp_seq= ttl= time=2.55 ms [toughhou@hd1 ~]$ ping hd3
PING hd3 (192.168.0.103) () bytes of data.
bytes from hd3 (192.168.0.103): icmp_seq= ttl= time=2.48 ms

能ping通说明已经OK。

2. 关闭防火墙
[root@hd1 toughhou]# chkconfig iptables off

3. SSH免密码登陆

1) 生成密钥与公钥
登陆到hd1,把生成的id_rsa.pub(公钥)内容cat到authorized_keys文件中。同时登陆到hd2, hd3,生成id_rsa.pub,并把hd2, hd3各自的id_rsa.pub的内容copy到hd1中的authorzied_keys中。最后从hd1中scp到hd2, hd3的.ssh目录中。

[toughhou@hd1 ~]$ ssh-keygen -t rsa
[toughhou@hd1 ~]$ cat id_rsa.pub >> authorized_keys [toughhou@hd2 ~]$ ssh-keygen -t rsa
[toughhou@hd2 ~]$ cat id_rsa.pub >> authorized_keys [toughhou@hd3 ~]$ ssh-keygen -t rsa
[toughhou@hd3 ~]$ cat id_rsa.pub >> authorized_keys

2) scp authorized_keys到hd2, hd3

[toughhou@hd1 ~]$ scp authorized_keys 192.168.0.102:/home/toughhou/.ssh/
[toughhou@hd1 ~]$ scp authorized_keys 192.168.0.103:/home/toughhou/.ssh/

3) 验证ssh登陆是否是免密码

(第一次需要密码,若配置正确的话之后就不用密码了。)

[toughhou@hd1 ~]$ ssh 192.168.0.102
[toughhou@hd2 ~]$ [toughhou@hd1 ~]$ ssh 192.168.0.103
[toughhou@hd3 ~]$

关于SSH免密码登陆,也可以参考文章 “SSH时不需输入密码”,它更具体地说了关于SSH设置。

二、安装jdk、hadoop及设置环境变量

1. 下载jdk、hadoop安装包
download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz

2. 解压

[toughhou@hd1 software]$ tar zxvf jdk-7u65-linux-x64.gz
[toughhou@hd1 software]$ tar zxvf hadoop-2.4..tar.gz [root@hd1 software]# mv hadoop-2.4. /opt/hadoop-2.4.
[root@hd1 software]# mv jdk1..0_65 /opt/jdk1.7.0

3. 设置Java环境变量

以root用户登陆编辑/etc/profile,加入以下内容:

[root@hd1 software]# vi /etc/profile

#java
export JAVA_HOME=/opt/jdk1.7.0
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib #hadoop
export HADOOP_HOME=/opt/hadoop-2.4.
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

4. 验证环境变量

[toughhou@hd1 hadoop]$ java -version

[toughhou@hd1 hadoop]$ hadoop
Usage: hadoop [--config confdir] COMMAND

三、hadoop集群设置

1. 修改hadoop配置文件

[toughhou@hd1 hadoop]$ cd /opt/hadoop-2.4.0/etc/hadoop

1) hadoop-env.sh、yarn-env.sh 设置JAVA_HOME环境变量

最开始以为已经在/etc/profile设置了JAVA_HOME,所以在hadoop-env.sh和yarn-env.sh中已经能成功获取到JAVA_HOME,所以就不用再设置了。最终发现这在hadoop-2.4.0中行不通,start-all.sh的时候出错了(hd1: Error: JAVA_HOME is not set and could not be found.)。

找到里面的JAVA_HOME,修改为实际路径

2) slaves
这个文件配置所有datanode节点,以便namenode搜索

[toughhou@hd1 hadoop]$ vi slaves
hd2
hd3

3) core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hd1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/temp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>hd1</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>

4) hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

5) mapred-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hd1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/temp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>hd1</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>

6) yarn-site.xml

<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>hd1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hd1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hd1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hd1:18041</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hd1:8088</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/hadoop/mynode/my</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/hadoop/mynode/logs</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

2. 把以下文件复制到其它节点

[root@hd1 toughhou]# scp -R /opt/hadoop-2.4./ hd2:/opt/
[root@hd1 toughhou]# scp -R /opt/hadoop-2.4./ hd3:/opt/ [root@hd1 toughhou]# scp -R /opt/jdk1.7.0/ hd2:/opt/
[root@hd1 toughhou]# scp -R /opt/jdk1.7.0/ hd3:/opt/ [root@hd1 toughhou]# scp /etc/profile hd2:/etc/profile
[root@hd1 toughhou]# scp /etc/profile hd3:/etc/profile [root@hd1 toughhou]# scp /etc/hosts hd2:/etc/hosts
[root@hd1 toughhou]# scp /etc/hosts hd3:/etc/hosts

配置完成之后需要重启电脑

3. namenode初始化

只需要第一次的时候初始化,之后就不需要了

[toughhou@hd1 bin]$ hdfs namenode -format

如果“Exiting with status 0”,就说明OK。
14/07/23 03:26:33 INFO util.ExitUtil: Exiting with status 0

4. 启动集群

[toughhou@hd1 sbin]$ cd /opt/hadoop-2.4./sbin

[toughhou@hd1 sbin]$ ./start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hd1]
hd1: namenode running as process . Stop it first.
hd2: starting datanode, logging to /opt/hadoop-2.4./logs/hadoop-toughhou-datanode-hd2.out
hd3: starting datanode, logging to /opt/hadoop-2.4./logs/hadoop-toughhou-datanode-hd3.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: secondarynamenode running as process . Stop it first.
starting yarn daemons
resourcemanager running as process . Stop it first.
hd3: starting nodemanager, logging to /opt/hadoop-2.4./logs/yarn-toughhou-nodemanager-hd3.out
hd2: starting nodemanager, logging to /opt/hadoop-2.4./logs/yarn-toughhou-nodemanager-hd2.out

5. 查看各节点的状态

[toughhou@hd1 sbin]$ jps
NameNode
SecondaryNameNode
Jps
ResourceManage [toughhou@hd2 ~]$ jps
NodeManager
Jps
DataNode [toughhou@hd3 ~]$ jps
NodeManager
Jps
DataNode

以上说明都OK。

6. windows添加快捷访问

为了方便访问,我们也可以编辑 %systemroot%\system32\drivers\etc\hosts 文件,加入以下的 ip和主机映射

192.168.0.101 hd1
192.168.0.102 hd2
192.168.0.103 hd3

这样,我们在自己机器上也可以通过 http://hd2:8042/node 方式访问节点,而没必要用 http://192.168.0.102:8042/node。

7. wordcount 测试

为了更进一步验证hadoop环境,我们可以运行hadoop自带的例子。

wordcount是hadoop最经典的mapreduce例子。我们进入到相应目录运行自带的jar包,来测试hadoop环境是否OK。

具体步骤:

1) hdfs上创建目录

[toughhou@hd1 ~]$ hadoop fs -mkdir /in/wordcount
[toughhou@hd1 ~]$ hadoop fs -mkdir /out/

2) 上传文件到hdfs

[toughhou@hd1 ~]$ cat in1.txt
Hello World , Hello China, Hello Shanghai
I love China
How are you [toughhou@hd1 ~]$ hadoop fs -put in1.txt /in/wordcount

3) 运行wordcount

[toughhou@hd1 ~]$ cd /opt/hadoop-2.4./share/hadoop/mapreduce/

[toughhou@hd2 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.4..jar wordcount /in/wordcount /out/out1

// :: INFO client.RMProxy: Connecting to ResourceManager at hd1/192.168.0.101:
// :: INFO input.FileInputFormat: Total input paths to process :
// :: INFO mapreduce.JobSubmitter: number of splits:
// :: INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1406105556378_0003
// :: INFO impl.YarnClientImpl: Submitted application application_1406105556378_0003
// :: INFO mapreduce.Job: The url to track the job: http://hd1:8088/proxy/application_1406105556378_0003/
// :: INFO mapreduce.Job: Running job: job_1406105556378_0003
// :: INFO mapreduce.Job: Job job_1406105556378_0003 running in uber mode : false
// :: INFO mapreduce.Job: map % reduce %
// :: INFO mapreduce.Job: map % reduce %
// :: INFO mapreduce.Job: map % reduce %

4) 查看运行结果

[toughhou@hd2 mapreduce]$ hadoop fs -cat /out/out4/part-r-
,
China
China,
Hello
How
I
Shanghai
World
are
love
you

到此,全部结束。整个hadoop-2.4.0集群搭建过程全部结束。

CentOS6.4上搭建hadoop-2.4.0集群的更多相关文章

  1. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  2. hadoop 2.2.0集群安装详细步骤(简单配置,无HA)

    安装环境操作系统:CentOS 6.5 i586(32位)java环境:JDK 1.7.0.51hadoop版本:社区版本2.2.0,hadoop-2.2.0.tar.gz 安装准备设置集群的host ...

  3. hadoop 2.2.0 集群部署 坑

    注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...

  4. hadoop 2.2.0集群安装

    相关阅读: hbase 0.98.1集群安装 本文将基于hadoop 2.2.0解说其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net ...

  5. [Docker][Hadoop]基于Docker1.12.3 搭建Hadoop 2.7.2 集群以及简单分析

    一 Hadoop简介 Hadoop 2.7.2 Doc refer to http://hadoop.apache.org/docs/r2.7.2/ HDFS (The following is a ...

  6. Linux平台上搭建apache+tomcat负载均衡集群

    传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...

  7. Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.kaf ...

  8. 3.环境搭建-Hadoop(CDH)集群搭建

    目录 目录 实验环境 安装 Hadoop 配置文件 在另外两台虚拟机上搭建hadoop 启动hdfs集群 启动yarn集群 本文主要是在上节CentOS集群基础上搭建Hadoop集群. 实验环境 Ha ...

  9. CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.集群规 ...

  10. Hadoop 2.2.0集群搭建

    一.环境说明 1.虚拟机平台:VMware10 2.Linux版本号:ubuntu-12.04.3-desktop-i386 3.JDK:jdk1.7.0_51 4.Hadoop版本号:2.2.0 5 ...

随机推荐

  1. Flex4 自定义通用的ImageButton

    Flex4与之前版本的一个极大区别就是外观皮肤的分离,虽然进一步解耦,但存在一个不爽的地方就是增加了编码的工作量,你能想象为你的每个自定义组件都写一个对应的皮肤吗?可能仅仅和你之前写过的组件差了那么一 ...

  2. fastcgi(一)

    首先安装 fastcgi 开发包 ... #wget http://www.fastcgi.com/dist/fcgi-current.tar.gz #tar -zxvf fcgi-current.t ...

  3. 架构设计--逻辑层 vs 物理层

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 Layer 和Tier都是层,但是他们所表现的含义不同,Tier指的是软件系统中物理 ...

  4. Redis 2:简单使用

    导读:上一篇博客对于Redis进行了简单的介绍,本篇博客就浅显的说一下Redis的基本操作使用.本次测试的环境是window8.1,呃,没用Linux等其他系统,就下载的window环境的安装包. 一 ...

  5. select,poll,epoll的归纳总结区分

    Select.Poll与Epoll比较 以下资料都是来自网上搜集整理.引用源详见文章末尾. 1 Select.Poll与Epoll简介 Select select本质上是通过设置或者检查存放fd标志位 ...

  6. Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题

    // 触发器 create or replace trigger tr_sync_BD_MARBASCLASS after INSERT or UPDATE on BD_MARBASCLASS for ...

  7. Find out who the “mole” is?

    Blueheat Company’s  production server was out of order again. The CEO was very upset and want their ...

  8. leetcode 110

    110. Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this problem, ...

  9. poj1936_All in All

    时间复杂度O(n) #include <stdio.h> #include <string.h> int main(){ int al,bl,i,j; +]; +]; whil ...

  10. 著名的二分查找的BUG

    int binarySearch(int a[], int key, int length) { int low = 0; int high = length - 1; while (low < ...