Hadoop安装

step1. 在四台机器上实现SSH互通。

       这一步是对搭建Hadoop平台至关重要的一步。没有平台各个节点间的通信,就谈不上分布式计算。

       整个配置过程细节如下:

1,  建立新用户:

a)         user add ____

b)        passwd _____

c)         切换用户:su ____

2,  生成公钥(/root/.ssh/)

a)         ssh-keygen –t rsa

3,  拷贝公钥

a)         对自己:cp id_rsa.pub authorized_keys

b)        对其他机器:scp authorized_keys    机器名:/home/___/.ssh/

此步建议所有机器密钥生成时均先复制到一台机器,待所有完成后,把这台机器的存储的公钥复制到各台机器

4,  修改ssh通信的配置

a)         vi /etc/ssh/sshd_config

b)        PasswordAuthentication no  (不是必须)

AuthorizedFile .ssh/authorized_keys

5,  开启服务

a)         Service sshd restart(root下)

b)        从此就可以通过ssh  主机名实现各台机器通信

 

Step2:下载并安装jdk

1,  首先用java –version命令检测JDK版本,发现自带为openJDK版本

a)    #java –version
Java version “1.x.0_xx” OpenJDK Runtime Environment ……………………

2,下载JDK。Root下执行命令安装

      Unzip jdk-6u31-linux-x64-rpm.bin

     Then:

       rpm –ivh jdk-6u31-linux-amd64.rpm

3,  设置环境变量

a)         vi ~/.bashrc

b)        添加如下信息:

#export JAVA here

export JAVA_HOME= /usr/java/jdk1.6.0_31

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

4,  选择版本

a)         undate-alternatives –install /usr/bin/java /usr/java/jdk1.6.0_31/bin/java 60

b)        update-alternatives –config java

此时会出现程序供选择,选择我们安装的版本即可

                     此时再次输入java –version,可以查看安装好的版本号

Step3:下载并安装Hadoop

1,  安装Hadoop

a)         到官网下载 

b)        tar –zxvf hadoop-1.0.3.tar.gz

2,  配置

a)         vi conf/hadoop-env.sh,修改JAVA_HOME

b)        vi conf/core.site.xml,修改fs.default.name项

c)         vi conf/mapred-site.xml,修改mapred.job.tracker项

d)        修改masters和slaves,其中注意masters为secondarynamenode

3,  把配置好的hadoop文件夹拷贝到其他电脑,修改.bashrc,添加:

#export Hadoop here

export HADOOP_HOME=/home/hdpuser1/hadoop

export PATH=$HADOOP_HOME/bin:$PATH

4,  service iptable stop / chkconfig iptables off,关闭防火墙,重启有效

 Step4:跑示例程序,验证系统搭建成功,以及错误处理

       1,常用命令

hadoop dfs –ls     查看/usr/root目录下的内容;

hadoop dfs –rmr xxx   删除目录; 
hadoop dfsadmin -refreshNodes   更新节点信息

hadoop dfsadmin –repor 全局的查看DataNode的情况; 
hadoop job     后面增加参数是对于当前运行的Job的操作,例如list,kill等; 
hadoop balancer     均衡磁盘负载。

hadoop fs -mkdir /         在文件系统中新文件夹

2,  执行示例程序

a)         格式化一个新的分布式文件系统:hadoop namenode -format

b)        启动Hadoop  :start-all.sh

c)         将输入文件拷贝到分布式文件系统:
$ bin/hadoop fs -put conf input

d)        运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-examples-1.0.3.jar input output

e)         查看统计结果:
hadoop fs -cat output/part-00000

3,  错误处理

a)         Datanode无法启动,查看log文件

  1.                                       i.              "NoRouteToHostException: No route to host"
    1. 解决办法:在namonode,/etc/init.d/iptables stop
    2. 或者 chkconfig iptables off  (重启有效)
  2.                                     ii.              “ Incompatible namespaceIDs”
    1. 解决办法:
    2. 修改data/current/VERSION里面的namespaceID参数,使之与name文件夹下的相同。
  3.                                   iii.              之后hadoop-daemon.sh start datanode 

b)        Namenode is in safe mode

  1.                                       i.              hadoop dfsadmin -safemode leave

 

Step5:Hadoop集群扩容

1,  单个节点扩容

a)         通过挂载硬盘来扩大单个节点的容量。(root下操作)

  1.                                       i.              挂在硬盘后用命令fdisk –l查看是否挂载成功
  2.                                     ii.              格式化:mkfs.ext3 /dev/***
  3.                                   iii.              挂载:mount /dev/**** /mnt/****
  4.                                    iv.              写分区表:fdisk /edv/*****

接下来命令依次为:

N

P

1

Enter

Enter

P

W

之后df –h查看是否成功

  1.                                      v.              修改用户权限(xxxx为hadoop用户)
    1. chown xxxxx 文件名
    2. chgrp xxxxx 文件名
  2.                                    vi.              修改dfs.data.dir,可以用“,”分割新旧目录。至此已完成了挂载。可以进一步修改硬盘的配置,以实现重启有效(强烈建议)。

修改/etc/fstab

增加一行

/dev/***** /mnt/***** ext3 default 1 2

       

2,  添加/删除节点

a)         Hadoop添加节点的方法 ::

1. 先在slave上配置好环境,包括ssh,jdk,.bashrc,iptable等;
2. 将新的datanode的host加到集群namenode及其他datanode中去;
3. 将新的datanode的主机名加到master的conf/slaves中;
4. 在新节点上启动datanode和tasktracker

hadoop-daemon.sh start datanode

hadoop-daemon.sh start tasktracker

5. 当集群负载已经较大时,可以运行bin/start-balancer.sh,调整负载均衡。不过这个会很耗时间。

              b)Hadoop删除节点的方法

                     1.在主节点的core-site.xml中添加dfs.hosts.exclude,excludes名值对

2.在主节点的$HADOOP_HOME目录下新建文件夹excludes,每行为需要删除的节点。

3.运行命令hadoop dfsadmin –refreshNodes,可以动态刷新dfs.hosts和dfs.hosts.exclude配置。无需重新启动NameNodes。

4.可以通过hadoop dfsadmin –report查看结果(状态由ing到ed)。

posted @ 2012-12-13 12:52  shileiw  阅读(305)  评论(0编辑  收藏  举报