1,安装虚拟机virtual box,添加虚拟机hdp1.vdi(网络1:nat或bridge, 网络2:internal),安装ubuntu 11.10,添加用户hadoop作为运行hadoop之用户,并在安装好后设置root用户密码。

2,在虚拟机中安装“增强功能”,重启后右上角系统菜单“System Settings..."->"Language Support"  中 "Install / Remove Language..."安装简体中文支持, "Keyboard input method system"选ibus. (注:系统panel上的输入法图标经常会消失,可以通过命令: killall ibus-daemon; ibus-daemon -d 重启ibus显示)

3,更改apt源:

$ sudo cp /etc/sources.list /etc/sources.list.bak

$ sudo gedit /etc/sources.list

内容如下:
deb http://ubuntu.cn99.com/ubuntu/ oneiric main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ oneiric-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ oneiric-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ oneiric-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ oneiric main restricted universe multiversedeb

deb http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted

#deb http://tw.archive.ubuntu.com/ubuntu/ oneiric main universe restricted multiverse
#deb-src http://tw.archive.ubuntu.com/ubuntu/ oneiric main universe restricted multiverse
#deb http://tw.archive.ubuntu.com/ubuntu/ oneiric-security universe main multiverse restricted
#deb-src http://tw.archive.ubuntu.com/ubuntu/ oneiric-security universe main multiverse restricted
#deb http://tw.archive.ubuntu.com/ubuntu/ oneiric-updates universe main multiverse restricted
#deb-src http://tw.archive.ubuntu.com/ubuntu/ oneiric-updates universe main multiverse restricted

4,$ sudo apt-get update

5,$ sudo apt-get install vim-gtk, axel, mutliget   (注:下载工具)

6,$ sudo apt-get install chkconfig sysv-rc-conf  (注:管理系统服务用)

7,$ sudo apt-get install openjdk-7-jdk rsync openssh-server openssh-client (注:hadoop需用的工具)

这一步可顺便配置好java的环境变量:

$ sudo vi /etc/profile.d/bash_completion.sh, 在文件末尾添加内容如下:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib

8,下载hadoop: $ axel http://apache.etoak.com/hadoop/common/hadoop-1.0.1/hadoop_1.0.1-1_i386.deb

9, 安装hadoop:$ sudo dpkg -i hadoop_1.0.1-1_i386.deb

10,查看hadoop安装了哪些文件:$ sudo dpkg -L hadoop

11,更改系统网卡2的网络配置为;静态ip, 地址-> 192.168.0.1 (注:以后其它系统相应改为192.168.0.2, 192.168.0.3 ......)

12,更改系统配置:

$ sudo vi /etc/hostname 内容为:hdp1 (注:以后其它系统相应改为hdp2, hdp3 ......)

$ sudo vi /etc/hosts 增加内容:

192.168.0.1     hdp1
192.168.0.2     hdp2
192.168.0.3     hdp3
192.168.0.4     hdp4

注意:应确保hostname和hosts文件设置的主机名一致,否则reduce过程无法完成。

13,产生SSH密钥,实现无密码安全联机:

$ ssh-keygen -t rsa -P ""

$ cd ~/.ssh

$ cp id_ras.pub authorized_keys

$ ssh hdp1 ( 注:本步测试上面各步骤是否正确,正确方能成功)

$ exit

注:以下步骤配置hadoop

14,选定hdp1为Master并作为NameNode和JobTracker

$ sudo vi /etc/hadoop/masters 内容为:hdp1

15,将所有服务器(包括主服务器hdp1)全部添加为slaves次服务器,当作DataNode和TaskTracker

$ sudo vi /etc/hadoop/slaves 内容为:

hdp1

hdp2

hdp3

16,hadoop运行环境变量设置

$ cd /etc/hadoop

$ sudo vi hadoop-env.sh
将export JAVA_HOME=/usr/lib/jvm/java-6-sun注释掉(前面加#),其后添加一行

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/

17, 在/etc/hadoop目录下添加hadoop云计算系统设置文档-> core-site.xml

$ sudo vi core-site.xml

内容如下:

<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://hdp1:9000</value>
    </property>
</configuration>

18, 在/etc/hadoop目录下添加HDFS分布式文档系统设置文档-> hdfs-site.xml

赋予hadoop访问/var/run目录的权限

$ sudo usermod -a -G root hadoop (注: hadoop加入root组, 也可用gpasswd -a hadoop root命令,均需注销再登录后生效)
$ sudo chmod g+w /run /var/run (注: 不要加-R选项, /run/sshd目录的属性更改后会导致ssh无法连接, 另本命令需在每次机器重启后执行一次, 可通过在/etc/init.d/rc.local文件中添加该命令自动进行 )

创建目录

$ mkdir -p ~/hadoop/dfs/data (注:无须创建~/hadoop/dfs/name,在格式化HDFS文档系统时会自动创建,否则格式化会失败)

再创建文档

$ sudo vi hdfs-site.xml

内容如下:

<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/home/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/home/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

19, 在/etc/hadoop目录下添加Map/Reduce程序设置文档-> mapred-site.xml

$ sudo vi mapred-site.xml

内容如下:

<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>hdp1:9001</value>
    </property>
</configuration>

注:以下各步创建及创建其他主机

20,复制VDI文件创建其他主机

1)关闭hdp1

2)复制hdp1.vdi为hdp2.vdi, hdp3.vdi

3)更改虚拟硬盘之UUID:

> cd "\Program Files\Oracle\VirtualBox"

> VBoxManage internalcommands sethduuid g:\vbox\hdp2.vdi

> VBoxManage internalcommands sethduuid g:\vbox\hdp3.vdi

4)启动virtualbox创建虚拟主机,分别选择已存在的硬盘hdp2.vdi和hdp3.vdi,网络配置应和hdp1一样。

21,启动所有虚拟主机,配置hdp2和hdp3的第二块网卡的静态IP,配置hostname

注:以下启动云计算系统

22,格式化hadoop云计算系统

$ hadoop namenode -format (若已存在~/hadoop/dfs/name目录,该步可能出错)

$ sudo chown -R hadoop:hadoop /home/hadoop/dfs/name/current/

23,启动云计算系统

$ start-all.sh

24,使用浏览器查看hadoop运行状况

http://hdp1:50070/   (NameNode运行状况,点击其中的“Live Nodes”可查看各DataNode的运行状况)

http://hdp1:50030/  (查看JobTracker的运行状况)

25,关闭云计算系统

$ stop-all.sh

26,使用hadoop官方程序组件(wordcount)测试云计算系统

1)创建目录并准备文件

$ makedir -p ~/wordcount

$ cd ~/wordcount

$ echo "Hello World Bye World" >> inputfile1

$ echo "Hello Hadoop Bye Hadoop" >> inputfile1

2)指定HDFS分布式文档格式筛选这两件文件,做为Map/Reduce工作的输入文档 (即把整个目录中的文件上传到HDFS的input中)

$ hadoop dfs -put ~/wordcount input
$ hadoop fs -ls input (查看input中的文件)
结果:
Found 2 items
-rw-r--r--   1 hadoop supergroup         22 2012-04-05 10:07 /user/hadoop/input/inputfile1
-rw-r--r--   1 hadoop supergroup         27 2012-04-05 10:07 /user/hadoop/input/inputfile2

3)使用hadoop-examples-1.0.1.jar内附的wordcount程序计算各输入文档中单词出现的总次数

$ hadoop jar /usr/share/hadoop/hadoop-examples-1.0.1.jar wordcount input output

4)通过命令输出或http://hdp0:50030可查看当前进度

5)计算完成后,看结果:

$ hadoop dfs -get output output

$ hadoop fs -cat output/part-r-00000

27,排错:注意看/var/log/hadoop/hadoop/目录下的各日志文件

1)org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory output already exists
 
这是因为mapreduce的输出都应该是单独的输出文件,不能有重名的情况
需要删除已有的同名文件
$ hadoop fs -rmr output

2)map进行到100%后,reduce过程进行到某个数值(如16%)后就不再继续,直到被hadoop强制关闭。

可能原因:

a) 因为 /etc/hosts 中配置的IP 别名和hostname不一致造成的!

经过对job history进行分析,并跟踪到task失败的任务的节点,查看syslog,发现原因如下:
<1>.对于运行在A节点上的map任务,运行完毕后,将运行结果提交给jobtracker,并将运行结果保存在节点A上.
<2>.对于运行在B节点上的reduce任务,从jobtracker取得任务信息(假设任务包括对节点A的map的数据).并直接从节点A提取该map的结果.
原因在第二步.当节点B的reduce从jobtracker获得的任务中,包括map的服务器地址,而这个地址是改服务器的名字,而不是IP地址.因此,当在本地解析该服务器名的时候,无法解析出他的ip地址,导致无法从A节点,提取数据.
slave2  reduce时候需要得到slave1 map的结果, datanode间需要数据copy, slave2找salve1使用的是hostname,而不是/etc/hosts 中配置的slave1,
故:/etc/hostname, /etc/hosts, $HADOOP_HOME/conf/masters, $HADOOP_HOME/conf/slaves, $HADOOP_HOME/conf/core-site.xml, $HADOOP_HOME/conf/mapred-site.xml中的IP别名要和hostname一致。

b) 因为secondary name node所在的机器没有配置dfs.http.address这个参数,该参数在hadoop-default.xml里的缺省值是0.0.0.0:50070,应改为name node所在机器的ip地址。

3)hadoop 文件夹无法删除,Name node is in safe mode.
关闭安全模式:$ hadoop dfsadmin -safemode leave

28, 其他hadoop命令

1) 在hdfs 中建立一个input 目录
$ hadoop fs –mkdir input

2) 查看目录中文件列表
$ hadoop fs -ls input

3)将file01 和file02 拷贝到hdfs 中:
$ hadoop fs –copyFromLocal /home/hexianghui/soft/file0* input

4)查看文件内容:
$ hadoop fs -cat output/part-r-00000

5)删除目录
$ hadoop fs -rmr output

6)关闭安全模式
$ hadoop dfsadmin -safemode leave

在Ubuntu11.10下构建hadoop实验环境笔记相关推荐

  1. 大数据开发教程——构建Hadoop开发环境

    什么是Hadoop ? Hadoop是由 Apache 基金会开发和维护的一个开源的分布式计算和存储框架. Hadoop 为庞大的计算机集群提供可靠的.可伸缩的应用层计算和存储支持,它允许使用简单的编 ...

  2. arm-linux-gcc armv4,ubuntu11.10 下 arm-linux-gcc4.4.3

    参考了前人的成果,结合自己实践. 1 下载arm-linux-gcc-4.4.3.tgz到任意的目录下,进入这个文件夹 $ sudo tar xvzf arm-linux-gcc-4.4.3.tgz ...

  3. linux3.10.46源码下载,Ubuntu11.10下编译android源码4.0.3

    1.初始化编译环境 软件需求: Python2.5-2.7,可以http://www.python.org/download/下载(Ubuntu11.10自带). JDK6:编译Gingerbread ...

  4. Linux下的ssh实验环境搭建与管理

    实验环境 [size=10.5000pt]1:网桥模式 [size=10.5000pt]2:安装好vmtoos [size=10.5000pt]3:安装好yum [size=10.5000pt]4:安 ...

  5. linux下运行hadoop,Linux环境下hadoop运行平台的搭建

    1.hadoop版本认识 截至目前(2012年12月23日),Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0.第一 ...

  6. Ubuntu11.10下wine QQ2011成功

    用了很长时间的wineQQ, 正如前一篇文章(1)里所述,大伙都用QQ,为了大家方便, 选择了QQ:而官方的LinuxQQ实在太糟糕,所以才用wine运行QQ. 看到wine官网上面更新了wine1. ...

  7. memcached在php下的应用 实验环境部署 郝铠锋

    memcached在php下的应用 这是一篇论文的实验环境部署说明.作者在这里给出比原先使用yum部署实验环境更加便捷高效的方法. [1]郝铠锋.memcached在PHP下应用研究[J].中国新通信 ...

  8. Eclipse下搭建Hadoop开发环境,并运行第一个实例

    有同学无法正常运行程序,这里将Eclipse下Hadoop环境配置进行一下说明: 1.新建Map/Reduce工程 2.设置Hadoop Locaiton,第一次使用的话,点击大象,新建配置. 3.设 ...

  9. ubuntu 10.10下搭建android开发环境 安装必要工作用软件

    进了新公司之后,工作环境有了很大的变化,以前都是在windows环境下进行程序开发,没怎么接触linux系统,新项目组中有6个同事,一水的ubuntu,木有办法,我也换成ubuntu吧. 曾经在学li ...

最新文章

  1. vpwm的控制变频_变频V/F和矢量控制你知道区别吗?据说这四种控制没有几人能说清...
  2. MATLAB-矩阵相关计算(2)
  3. 【caffe】windows下vs2013+opencv3.2.0+opencv_contrib(包含dnn)+cmake3.8编译与配置
  4. [二叉树]序列化二叉树 (剑指offer61)
  5. oracle--number
  6. c语言除法在全局区,深入C语言内存区域分配(进程的各个段)详解
  7. 笑谈“委托”与“事件”
  8. typora 语法教程
  9. 转:PyDev for Eclipse 简介
  10. android带人脸识别码,Android自带的人脸识别
  11. 免费智能AI文章生成器-只需要输入关键词自动生成文章的软件
  12. 时序数据获取 | Python实现时间序列数据集获取
  13. 上班族时间自由,做什么副业合适?最好是在手机或电脑上的副业?
  14. 手机测试内存速度的软件,如何查看手机内存速度?手机内存读取速度测试_手机内存速度多少算正常...
  15. (转)原子时代来临-Intel革命性Atom透析
  16. c语言 乘法运算符,C 乘法运算符
  17. Java+SSM二手交易商城微信小程序源码【包调试运行】
  18. 一阶微分电路和积分电路有何功能
  19. Service Mesh发展历程
  20. spring-上手spring

热门文章

  1. Winform中实现新增和更新共用一个页面的示例流程
  2. Winform中实现监控CPU内存使用率(附代码下载)
  3. java加载一个来自项目之外的java文件,执行其main方法的一种实现方式
  4. 集成学习(ensemble learning)(三)
  5. 在JAVA 中将堆与栈分开的原因
  6. java redis缓存理解_Java项目中使用Redis缓存案例
  7. c语言 遍历.jpg图像,求指导,如何用c语言实现读取*.raw格式图像
  8. A/B 测试:以变应变,给用户更好的体验“宠爱”
  9. 倒计时 3 天 | 神策 2019 数据驱动大会即将开幕
  10. 有一天老板和我要几个关键数据……