现在大家可以跟我一起来实现Ubuntu 12.04Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可。

系统版本:

  • master:Ubuntu 12.04
  • slave:Ubuntu 12.04
  • hadoop:hadoop 2.2.0
  • 安装ssh服务:sudo apt-get install ssh
  • 有时也要更新一下vim:sudo apt-get install vim  #刚安装的系统会出现vi 命令上下键变成AB的情况

1. 为master和slave机器安装JDK环境

下载jdk,如果安装版本“1.7.0_60”,官方下载地址为:java下载

解压jdk: tar -xvf  jdk-7u60-linux-i586.tar.gz

在/usr/local/下新建java文件夹:mkdir /usr/local/java

将解压文件移动到创建的java/文件夹下:sudo mv jdk1.7.0_60  /usr/local/java

修改/etc/profile文件:sudo vi /etc/profile

在文件末尾添加jdk路径:

输入 source /etc/profile 使java生效

测试java是否完全安装:java -version   #若出现版本信息则说明安装成功

2. 修改namenode(master)和子节点(slave)机器名:

sudo vi /etc/hostname   

修改后需重启才生效:sudo reboot

3. 修改namenode(master)节点映射ip

sudo vi /etc/hosts    #添加slave和master的机器名及其对应ip

PS:master、slave分别是namenode和datanode机器名,即hostname的名字

4. 为master和slave分别创建hadoop用户及用户组,并赋予sudo权限

sudo addgroup hadoop

sudo adduser -ingroup hadoop hadoop   #第一个hadoop是用户组,第二个hadoop是用户名

下面为hadoop用户赋予sudo权限:修改 /etc/sudoers 文件

sudo vi /etc/sudoers

添加hadoop  ALL=(ALL:ALL) ALL

PS:该操作需要在所有masterslave主机上进行

5. 建立ssh无密码登陆环境

以hadoop身份登录系统:su hadoop

生成密钥,建立namenode与datanode的信任关系,ssh生成密钥有rsa和dsa方式,默认采用rsa方式:

在/home/hadoop目录下输入: ssh-keygen -t rsa -P ""

确认信息按回车,会在/home/hadoop/.ssh下生成文件:

将id_rsa.pub追加到authorized_keys授权文件中: cat id_rsa.pub >> authorized_keys

在各个子节点也生成密钥:ssh-keygen -t rsa -P ""

master上的authorized_keys发送到各个子节点:

scp ~/.ssh/authorized_keys  hadoop@slave1:~/.ssh/

下面测试ssh互信: ssh hadoop@slave1

如果不需要输入密码就可以登录成功则表示ssh互信成功建立

6. 安装hadoop(只需配置master主机,slave主机可以直接复制)

下载hadoop到/usr/local下:下载地址

解压hadoop-2.2.0.tar.gz:sudo tar -zxf hadoop-2.2.0.tar.gz 

将解压出来的文件夹重命名为hadoop: sudo mv hadoop-2.2.0 hadoop

将hadoop文件夹的属主用户设为hadoop:sudo chown -R hadoop:hadoop hadoop

6.1 配置etc/hadoop/hadoop-env.sh文件

sudo vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh

找到“export JAVA_HOME=”部分,修改为本机jdk路径

6.2 配置etc/hadoop/core-site.xml文件

sudo vi /usr/local/hadoop/etc/hadoop/core-site.xml

<configuration></configuration>中间添加如下内容:

PSmaster为namenode主机名,即/etc/hosts文件里的名字

6.3 配置etc/hadoop/mapred-site.xml文件,若路径下没有此文件,则将mapred-site.xml.template重命名

sudo vi /usr/local/hadoop/etc/hadoop/mapred-site.xml

<configuration></configuration>中间添加如下内容:

PSmaster为namenode主机名,即/etc/hosts文件里的名字

6.4 配置hdfs-site.xml文件,若路径下没有此文件,则将hdfs-site.xml.template重命名

sudo vi hdfs-site.xml

<configuration></configuration>中间添加如下内容:

PS:若有多个slave节点,则将<value>间的内容可改为:

  • <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2,...</value>
  • <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2,...</value>
  • <value></value>中间的数字表示slave节点数

6.5 向slaves文件中添加slave主机名,一行一个

7.向slave节点分发配置文件

将配置文件发送到所有slave子节点上,先将文件复制到子节点/home/hadoop/下面(子节点也用hadoop用户登录:su hadoop

sudo scp /etc/hosts hadoop@slave1:/home/hadoop

scp -r /usr/local/hadoop hadoop@slave1:/home/hadoop

PSslave1slave子节点名,若有多个slave节点,应全部分发

在datanode机器上(slave节点)将文件移动到与master相同的路径下

sudo mv /home/hadoop/hosts /etc/hosts  (在子节点上执行)

sudo mv /home/local/hadoop /usr/local/  (在子节点上执行)

PS:若提示mv文件夹,则加上-r 参数

加入所属用户: sudo chown -R hadoop:hadoop hadoop    (在子节点上执行)

PS:子节点datanode机器要把复制过来的hadoop里面的data1,data2和logs删除掉!

配置完成

PS:可以将hadoop命令路径写入/etc/profile文件,这样我们就可以自如使用hadoop、hdfs命令了,否则在使用命令时都要加入/bin/hadoop这样的路径:

sudo vi /etc/profile

输入:source /etc/profile

8. 运行wordcount示例

首先进入/usr/local/hadoop/目录,重启hadoop

cd /usr/local/hadoop/sbin

./stop-all.sh

cd /usr/local/hadoop/bin

./hdfs namenode -format    # 格式化集群

cd /usr/local/hadoop/sbin

./start-all.sh 

可以在namenode上查看连接情况

hdfs dfsadmin -report      #下面是我的机器的结果

假设有测试文件test1.txt和test2.txt,首先创建目录/input

hadoop dfs -mkdir /input

将测试文件上传至hadoop:

hadoop dfs -put test1.txt /input/

hadoop dfs -put test2.txt /input/

子节点离开安全模式,否则可能会导致无法读取input的文件:

hdfs dfsadmin –safemode leave

运行wordcount程序:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /input/ /output

查看结果

hadoop dfs -cat /output/part-r-00000

PS:再次运行时需要删除output文件夹 :hadoop dfs -rmr /output


本文为原创博客,若转载请注明出处。

Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)的更多相关文章

  1. Ubuntu 16.04下使用docker部署ceph集群

    ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubun ...

  2. 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 ...

  3. Hadoop 2.6.0集群搭建

    yum install gcc yum install gcc-c++ yum install make yum install autoconfautomake libtool cmake yum ...

  4. Ubuntu 12.04下GAMIT10.40安装说明

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/164.html?1456481297 Ubuntu 12.04下GAMIT10.40安装步 ...

  5. Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs、npm和karma

    1.下载angularjs 进入其官网下载:https://angularjs.org/‎,建议下载最新版的:https://ajax.googleapis.com/ajax/libs/angular ...

  6. [转]ubuntu(12.04)下, 命令 ,内核 源代码的获取

    [转]ubuntu(12.04)下, 命令 ,内核 源代码的获取 http://blog.chinaunix.net/uid-18905703-id-3446099.html 1.命令:例如:要查看l ...

  7. Ubuntu 12.04 下安装 Eclipse

    方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单) $ sudo apt-get install eclipse 方法二:(优点是安装内容清爽,缺点是配置麻烦)1.安装JD ...

  8. 在Ubuntu 12.04下创建eclipse的桌面链接

    在Ubuntu 12.04下创建eclipse的桌面链接 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在Ubuntu 12.04上安装Hadoop并 ...

  9. 升级Ubuntu 12.04下的gcc到4.7

    我们知道C++11标准开始支持类内初始化(in-class initializer),Qt creator编译出现error,不支持这个特性,原因在于,Ubuntu12.04默认的是使用gcc4.6, ...

随机推荐

  1. Javascript装饰器的妙用

    最近新开了一个Node项目,采用TypeScript来开发,在数据库及路由管理方面用了不少的装饰器,发觉这的确是一个好东西.装饰器是一个还处于草案中的特性,目前木有直接支持该语法的环境,但是可以通过 ...

  2. c语言学习笔记.指针.

    指针: 一个变量,其值为另一个变量的地址,即,内存位置的直接地址. 声明: int *ptr; /* 一个整型的指针,指针指向的类型是整型 */ double *ptr; /* 一个 double 型 ...

  3. spring-boot-JdbcTemplate

    添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  4. flask插件系列之flask_cors跨域请求

    前后端分离在开发调试阶段本地的flask测试服务器需要允许跨域访问,简单解决办法有二: 使用flask_cors包 安装 pip install flask_cors 初始化的时候加载配置,这样就可以 ...

  5. 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践

    之前介绍过关于HBase 0.9.8版本的部署及使用,本篇介绍下最新版本HBase1.2.4的部署及使用,有部分区别,详见如下: 1. 环境准备: 1.需要在Hadoop[hadoop-2.7.3]  ...

  6. oracle只要第一条数据SQL

    select * from ( select * from COMMON_BIZREL_WF where sponsor is not null order by serialid ) where r ...

  7. Java杂知识汇总(自己积累的)

    [前提] 接下来,可能需要开始学习Java了,所以现在将前辈们传递给我的经验都记录下来,免得再次问他们. [积累] 1. 关于重启Tomcat服务器: 当在开发过程中, | 修改Java代码 -- 需 ...

  8. php 高并发解决方案(用于抢购) 转载

    最近在做一个团购项目,遇到个问题,就是在抢购.秒杀.抽奖等活动时,库存数量有限,但是同时下单人数超过了库存数量,就会导致商品超售问题.那么我们怎么来解决这个问题呢,我的思路如下: sql1:查询商品库 ...

  9. hdu 1846(巴什博弈)

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. cocos2d-x v2.2 IOS工程支持64-bit 遇坑记录

    修改缘由 由于 iPhone 5S的A7 CPU   iPhone 6(A8 CPU)都已经支持64-bit ARM 架构,据说64位处理器跑64代码会提高处理能力?因此二月一新提交appstore应 ...