hadoop2.5.1安装到虚拟机

jopen 10年前
1.虚拟机安装
系统版本 RHEL6.3
hadoop2.5.1安装到虚拟机

2.虚拟机ip配置
采用 共享方式(nat) : 
默认:
使用vmnet8 将虚拟机设置成使用dhcp方式上网,windows下选择"自动获取ip",linux下开启dhcp服务即可。 
手动设置: 
ip设置与vmnet8同网段, 
网关设置成vmnet8的网关, 
DNS服务器设置与主机相同, 
实现虚拟机<--->主机虚拟机<---->互联网 通信。
hadoop2.5.1安装到虚拟机

vim /etc/sysconfig/network-scripts/ifcfg-eth0
......
BOOTPROTO=static
ONBOOT="yes"
IPADDR=192.168.234.100 --设置为网关同ip段
NETMASK=255.255.255.0
GATEWAY=192.168.234.2-- vmnet8的网关
......
最后不要忘了设置DNS  echo "nameserver 8.8.8.8" >> /etc/resolv.conf
重启reboot

设置好了就可以用SecureCRT查看了,并且能够ping通外网
hadoop2.5.1安装到虚拟机

yum源配置
查看文档  使用CentOS的yum源进行升级或软件安装 

rpm -qa |grep yum 查看yum安装情况
rpm -qa |grep yum | xargs rpm -e --nodeps 卸载rhel原有yum

安装yum软件包 
1. #rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm 2. # rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm 
3. #rpm -ivh yum-3.2.29-30.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.3 0-14.el6.noarch.rpm 

由于centos官网6.3版的不再更新且文件不存在,所以选用的是 centos官网 6.5版本的yum相关包
同时下载163的仓库, http://mirrors.163.com/.help/CentOS6-Base-163.repo 修改$releaseser为6.5
删除/etc/yum.repos.d/rhel-source.repo
使用centos-163.repo替换

scp  centos-163.repo  root@192.168.234.112 :/etc/yum.repos.d/

安装rz+sz方便上传下载文件到本地
yum -y install lrzsz 

传输所有的依赖文件到其他服务器
scp -r dep   root@192.168.234.112 :/home/hadoop/

安装java,并配置环境变量
java -version 查看现有java版本

rpm -qa|grep java 查看java安装包
rpm -qa|grep java | xargs rpm -e --nodeps   卸载java安装包

vim /etc/profile 添加java环境变量配置
#set java path
JAVA_HOME=/usr/java/jdk1.7.0_45
JRE_HOME=/usr/java/jdk1.7.0_45/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

source /etc/profile 应用配置
其他机器使用相同配置
scp /etc/profile root@192.168.234.112:/etc/profile

配置host
192.168.234.114  namenode
192.168.234.111 datanode1
192.168.234.112 datanode2
192.168.234.113 datanode3 
其他namenode和datanode配置一样
scp /etc/hosts root@192.168.234.112:/etc/hosts


ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp到datanode

安装hadoop
tar -xvf dep/hadoop/hadoop-2.5.1.tar.gz

配置hadoop

/home/hadoop/hadoop-2.5.1/etc/hadoop中的slaves文件添加数据节点
datanode1
datanode2
datanode3

配置hostname
格式化namenode报错处理方法

/etc/sysconfig/network  中的hostname修改掉,并重启网络服务生效
service network restart

格式化文件系统
bin/hdfs namenode -format

http://192.168.234.114:50070/ 一定要记得关闭namenode的防火墙,否则访问不了
service iptables stop/status
hadoop2.5.1安装到虚拟机

hadoop2.5.1安装到虚拟机

但启动./start-dfs.sh一直会有个警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [namenode]
hadoop2.5.1安装到虚拟机

hadoop fs -mkdir /input命令报错
hadoop2.5.1安装到虚拟机

开启debug模式
export HADOOP_ROOT_LOGGER=DEBUG,console
hadoop2.5.1安装到虚拟机

可以看到是因为glibc版本太低的原因

有两种解决方法
1.在glibc2.12环境下重新编译hadoop
2.安装glibc2.14或以上版本

这里我采用第二种
升级glibc到2.14以上, 升级前 千万 不要卸载 glibc ,卸载后所有命令都失效了, 重启还报错
kernel panic - not attempted to kill init, 害得我只能重装系统了,又搞了半天
hadoop2.5.1安装到虚拟机
重装namenode之后, 从datanode传 hadoop 过去
格式化文件系统后重启,否则会找不到数据节点

1. 下载 
glibc-2.15-60.el6.x86_64.rpm 
glibc-common-2.15-60.el6.x86_64.rpm
安装
rpm -ivh glibc-2.15-60.el6.x86_64.rpm glibc-common-2.15-60.el6.x86_64.rpm --replacefiles
不加 --replacefiles会报文件冲突的错

重新运行./start-dfs.sh,不再报警了
hadoop2.5.1安装到虚拟机

hadoop fs -mkdir /input 创建文件夹
hadoop fs -ls / 展示文件列表
hadoop2.5.1安装到虚拟机

Hadoop报错:NoRouteToHostException: No route to host
关闭datanode数据节点的防火墙

测试mapreduce
创建文件夹input,创建测试文件test1,test2
mkdir input && cd input
echo "a b c d e" > test1
echo "a b c d f" > test2
hadoop fs -put input /
hadoop2.5.1安装到虚拟机

可以看到已经加入hdfs中

运行WordCount
cd /home/hadoop/hadoop-2.5.1/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.5.1.jar wordcount /input /output

自己打的包
hadoop jar wordct.jar org.WordCount /input /output

hadoop2.5.1安装到虚拟机
hadoop fs -cat /output/part-r-00000
hadoop2.5.1安装到虚拟机