Linux下Hadoop集群安装指南.docx
《Linux下Hadoop集群安装指南.docx》由会员分享,可在线阅读,更多相关《Linux下Hadoop集群安装指南.docx(14页珍藏版)》请在冰豆网上搜索。
Linux下Hadoop集群安装指南
Linux下Hadoop集群安装指南
第一步:
安装VMware(8.1.4)
如果机器是64位操作系统,安装VMware-workstation-full-8.0.0-471780,序列号:
5F0Z1-24057-DZX88-4L97K-1AV2N
如果是32位操作系统,就用VMware-workstation-full-9
第二步:
安装UbuntuLinux(8.1.3)
1)在VMware上新创建一个虚拟机,选择镜像ubuntu-10.04.4-desktop-i386,选择保存为单个文件。
2)Fullname就是机器名字,如Ubuntu-hadoop,username就是用户名,例如mimo,密码就是每次登陆linux的密码,虚拟机名可以写成写ubuntu-hadoop,
位置选择一个空间大的磁盘,尽量不要放在C盘
第三步:
安装Hadoop云计算系统(8.1.5)
1.创建Hadoop用户
2.安装Hadoop云计算系统软件
1)先用鼠标复制Hadoop安装包:
hadoop-1.0.4.tar,然后用鼠标复制到当前目录/home/mary;
2)然后执行:
tar-xzvfhadoop-1.0.4.tar.gz就开始安装了。
3.安装其他Hadoop必备软件
把jdk-6u33-linux-i586.bin复制到/home/mary下,然后命令行执行
sudo./jdk-6u33-linux-i586.bin
sudoapt-getinstallopenjdk-6-jdk
sudoapt-getinstallssh
sudoapt-getinstallopenssh-server
sudoapt-getinstallrsync
备注:
如果系统提示找不到文件,则是因为刚才把这个文件拷贝到了桌面,执行这个mvDesktop/jdk-6u33-linux-i586.bin./,则将文件移动到当前目录,再执行./jdk-6u33-linux-i586.bin,安装成功。
4.编辑主机设置文档&修改系统环境配置文件
4.1编辑主机设置文档_————设置虚拟机网络连接
需要这2台虚拟机能上网(Internet),同时相互能互联,并且能够与主机互联。
设置2块网卡,如下:
设置桥接模式下的网络连接.
1.sudo gedit /etc/network/interfaces
将eth1相关的内容修改为如下配置:
1.auto eth1
2.
3.iface eth1 inet static
4.address 192.168.1.101
mask 255.255.255.0
6.gateway 192.168.1.254
然后再重启网络服务:
1.sudo /etc/init.d/networking restart
最后再用ifconfig和route来看看是更改过来了,再ping一下sina,看看Internet是否可用:
按照同样的方法来配置其余虚拟机即可。
网络配好了后,可以通过ssh或ping来检测是否可以相互联通。
然后打开一个Terminal,
sudogedit/etc/hosts
设置为:
127.0.0.1localhost
192.168.1.100hadoop
192.168.1.101hadoop1
!
!
!
重点参考
4.2修改系统环境配置文件
sudogedit/etc/profile,加入如下配置:
exportJAVA_HOME=/home/mary/jdk1.6.0_33
exportJRE_HOME=/home/mary/jdk1.6.0_33/jre
exportCLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib:
$CLASSPATH
exportPATH=$HADOOP_HOME/bin:
$JRE_HOME/bin:
$JAVA_HOME/bin:
$PATH
exportHADOOP_HOME=/home/mary/hadoop
5.创建SSH密钥安全联机(免密码登录)
SSH基本原理和用法
SSH之所以能够保证安全,原因在于它采用了公钥加密。
过程如下:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
1)Master节点利用ssh-keygen命令生成一个无密码密钥对。
在Master节点上执行以下命令:
ssh-keygen-trsa-P''(创建密钥)
运行后询问其保存路径时直接回车采用默认路径。
生成的密钥对:
id_rsa(私钥)和id_rsa.pub(公钥),默认存储在"/home/用户名/.ssh"目录下。
查看"/home/用户名/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。
2)接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去,将RSA公用密钥文档id_rsa.pub存储成授权密钥文档authorized_keys。
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
3)sshlocalhost
4)exit
5)在其他slave主机上也同样运行SSH密钥的动作,生成“/home/mary/.ssh”密钥放置目录
6)在Master上使用scp安全复制指令将master这台主机所创建的SSH授权密钥authorized_keys,复制到每台slave上。
$scpauthorized_keysslave1:
/home/mary/.ssh
$scpauthorized_keysslave2:
/home/mary/.ssh
$sshslave1
$sshslave2
//ssh-copy-id–iid_rsapubzyl@slave尝试用该方法复制
第四步:
安装VIM
执行sudoapt-getinstallvim(下载27M)(vim是linux下的文本编辑器,配置环境变量时要用vim编辑器)
第五步:
多节点Hadoop云计算系统配置
1.Masters与slaves配置
用指令sudogeditmasters(home/mary/conf)修改文件masters
Master(为你的主机名可以gedit/etc/hostname去修改为和你想要的名字)
用指令sudogeditslaves(home/mary/conf)修改文件slaves
slave1(为你的主机名可以gedit/etc/hostname去修改为和你想要的名字)
slave2
127.0.0.1hadoop
2.hadoop运行环境变量配置hadoop-env.sh
进入到hadoop的conf目录下
$gedithadoop-env.sh
exportJAVA_HOME=/home/mary/jdk1.6.0_33
同时,在/etc/profile文件中加入以下
exportHADOOP_HOME=/home/mary/hadoop-1.0.4和PATH
另外,也可以执行vim.bashrc,就打开环境变量文件:
最后输入cat.bashrc查看环境变量。
如果配置同上面的一样,则说明配置环境变量成功。
补充:
JAVA_HOME、HADOOP_HOME如何确定?
输入pwd,查看当前目录,如果在/home/mary下,就输入ls查看,如下图,可以查看到JAVA_HOME和HADOOP_HOME。
2.Hadoop云计算系统设置文档——core-site.xml
输入vimcore-site.xml,然后按i键,进入编辑模式,然后增加如下代码:
fs.default.name
hdfs:
//master:
9000(这里的master为你的主机名)
hadoop.tmp.dir
/home/erick/tmp(在你的home目录下建一个tmp文件夹)
如下图所示。
然后退出vim。
3.HDFS分布式文档系统设置文档——hdfs-site.xml
然后输入vimhdfs-site.xml,指定刚刚创建的目录,增加如下代码。
dfs.replication
3
dfs.permissions
false
4.Map/Reduce程序设置文档——mapred-site.xml
输入vimmapred-site.xml(即配置mapreduce),然后增加如下代码:
mapred.job.tracker
master:
9001(master为主机名)
完成以上步骤后退出。
5.复制设置文档到其他Hadoop子服务器
$scp–r/home/mary/hadoop-1.0.4slave1:
/home/mary
$scp–r/home/mary/hadoop-1.0.4slave2:
/home/mary
*************到此为止,hadoop全部安装配置完毕。
**********************
第八步:
格式化Hadoop(8.2.3)
格式化HDFS,执行bin/hadoopnamenode-format
第九步:
启动Hadoop(8.2.3)
1)启动hadoop,执行start-all.sh
2)然后在浏览器里输入,可以看到HDFS的web界面,如下图:
(这里也为主机名)
如果你失败了,把hadoop下的log删掉。
还有把tmp下的文件全部删除重新查看配置在重启
3)在浏览器里输入,是MapReduce的界面,如下图:
第十步:
关闭hadoop
执行:
stop-all.sh
第十一步:
集群基准测试
1、HDFS基准测试
mary@ubuntu:
~$~/hadoop-1.0.4/bin/hadoopjarhadoop-1.0.4/hadoop-test-1.0.4.jarTestDFSIO\
>-write-nrFiles10-16
补充:
参考网址:
[1]查看ubuntu系统的版本:
cat/etc/issue
[2]查看ubuntu系统的位数:
[3]查看java是否安装成功:
java–version
[4]重启网络服务:
servicenetworkrestart
[5]即时生效:
#hostn
[6]linux终端下如何退出root权限:
:
Ctrl+D
[7]新建一个命令窗口:
ctrl+alt+T
[8]关闭Hadoop的安全模式:
Hadoop的目录下输入:
bin/hadoopdfsadmin-safemodeleave
[9]Linux删除文件夹和文件的命令
∙linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm-rf命令即可。
直接rm就可以了,不过要加两个参数-rf即:
rm-rf目录名字
-r就是向下递归,不管有多少级目录,一并删除
-f就是直接强行删除,不作任何提示的意思1
删除文件夹实例:
rm-rf/var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
删除文件使用实例:
rm-f/var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件
END
注意事项
∙使用这个rm-rf的时候一定要格外小心,linux没有回收站的
很多朋友在使用前没有看到这一点重要的提示信息,以至于删除之后再想找回就很难了
***附录:
Hadoop集群搭建常见错误***
1.路径问题
hadoop@ubuntu:
~$hadoop/bin/hadoopjar hadoop-0.20.2-examples.jar wordcountinput01output01
Exceptioninthread"main"java.io.IOException:
Erroropeningjobjar:
hadoop-0.20.2-examples.jar
atorg.apache.hadoop.util.RunJar.main(RunJar.java:
90)
Causedby:
java.util.zip.ZipException:
errorinopeningzipfile
atjava.util.zip.Zip(NativeMethod)
atjava.util.zip.ZipFile.(Zip)
atjava.util.jar.JarFile.(Jar)
atjava.util.jar.JarFile.(Jar)
atorg.apache.hadoop.util.RunJar.main(RunJar.java:
88)
发生这个异常后,找了很多帖子都没有解答,也有很多人遇到了类似的情况。
其实这一般并不是java包有问题,就是上面的命令行中
hadoop-0.20.2-examples.jar
路径不完整造成的,需要注意一下命令行当前的位置,比如对于我的情况,改为hadoop/hadoop-0.20.2-examples.jar就可以了
2.Datanode无法启动的问题
【问题描述】:
执行了./hadoopnamenode-format之后
启动hadoop:
./start-all.sh
运行jps,发现datanode没有起来但是TaskTracker是正常启动的。
去datanode的错误日志里面发现的下面的问题:
2015-05-0411:
37:
12,857INFOorg.apache.hadoop.hdfs.server.datanode.DataNode:
STARTUP_MSG:
/************************************************************STARTUP_MSG:
StartingDataNodeSTARTUP_MSG:
host=hadoop/192.168.182.100STARTUP_MSG:
args=[]STARTUP_MSG:
version=1.0.4STARTUP_MSG:
build=-r1393290;compiledby'hortonfo'onWedOct305:
13:
58UTC2012************************************************************/2015-05-0411:
37:
13,388INFOorg.apache.hadoop.metrics2.impl.MetricsConfig:
loadedpropertiesfromhadoop-metrics2.properties2015-05-0411:
37:
13,413INFOorg.apache.hadoop.metrics2.impl.MetricsSourceAdapter:
MBeanforsourceMetricsSystem,sub=Statsregistered.2015-05-0411:
37:
13,415INFOorg.apache.hadoop.metrics2.impl.MetricsSystemImpl:
Scheduledsnapshotperiodat10second(s).2015-05-0411:
37:
13,415INFOorg.apache.hadoop.metrics2.impl.MetricsSystemImpl:
DataNodemetricssystemstarted2015-05-0411:
37:
13,798INFOorg.apache.hadoop.metrics2.impl.MetricsSourceAdapter:
MBeanforsourceugiregistered.2015-05-0411:
37:
13,818WARNorg.apache.hadoop.metrics2.impl.MetricsSystemImpl:
Sourcenameugialreadyexists!
2015-05-0411:
37:
18,309ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode:
java.io.IOException:
IncompatiblenamespaceIDsin/home/mary/hadoop/data1:
namenodenamespaceID=1033684170;datanodenamespaceID=585330462atorg.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:
232)atorg.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:
147)atorg.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:
385)atorg.apache.hadoop.hdfs.server.datanode.DataNode.(DataNode.java:
299)atorg.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:
1582)atorg.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:
1521)atorg.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:
1539)atorg.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:
1665)atorg.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:
1682)2015-05-0411:
37:
18,316INFOorg.apache.hadoop.hdfs.server.datanode.DataNode:
SHUTDOWN_MSG:
/************************************************************SHUTDOWN_MSG:
ShuttingdownDataNodeathadoop/192.168.182.100
导致datanode启动不了。
原因:
每次namenodeformat会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。
namenodeformat清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录.
解决方法:
/home/mary/hadoop/data1这个目录是我 hdfs-site.xml配置文件里面dfs.data.dir的值,如下:
dfs.data.dir
/home/mary/hadoop/data1,/home/mary/hadoop/data2
方法1.
进入每个datanode的 dfs.data.dir 的current目录,修改里面的文件VERSION
#FriNov2315:
00:
17CST2012
namespaceID=246015542
storageID=DS-2085496284-192.168.1.244-50010-03
cTime=0
storageType=DATA_NODE
layoutVersion=-32
里面有个namespaceID将其修改成为报错信息中的 namenodenamespaceID=971169702
相同的 namespaceID .
然后重新启动datanode全部都能正常启动了。
方法2:
由于是测试环境,可以直接删除每个datanode上面 dfs.data.dir目录下所有的文件
rm-rf*(注意慎用该命令,不可恢复,彻底删除目录下的所有文件)
删除之后
重新启动也是可以正常的启动所有的datanode
进到dfs.data.dir目录下所有的datanode又全部重新生成了。
3.50070集群节点数正确,50030下查看,没有节点
原因:
namenode处于安全模式
解决方法:
退出安全模式
bin/hadoopdfsadmin-safemodeleave