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文件
-
i.
"NoRouteToHostException:
No route to host"
- 解决办法:在namonode,/etc/init.d/iptables stop
- 或者 chkconfig iptables off (重启有效)
-
ii.
“ Incompatible
namespaceIDs”
- 解决办法:
- 修改data/current/VERSION里面的namespaceID参数,使之与name文件夹下的相同。
- iii. 之后hadoop-daemon.sh start datanode
b) Namenode is in safe mode
- i. hadoop dfsadmin -safemode leave
Step5:Hadoop集群扩容
1, 单个节点扩容
a) 通过挂载硬盘来扩大单个节点的容量。(root下操作)
- i. 挂在硬盘后用命令fdisk –l查看是否挂载成功
- ii. 格式化:mkfs.ext3 /dev/***
- iii. 挂载:mount /dev/**** /mnt/****
- iv. 写分区表:fdisk /edv/*****
接下来命令依次为:
N
P
1
Enter
Enter
P
W
之后df –h查看是否成功
-
v.
修改用户权限(xxxx为hadoop用户)
- chown xxxxx 文件名
- chgrp xxxxx 文件名
- 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)。