设为首页 收藏本站
查看: 763|回复: 0

[经验分享] hadoop 1.0.3部署

[复制链接]

尚未签到

发表于 2016-12-5 10:19:22 | 显示全部楼层 |阅读模式
环境:操作系统Centos 6.2 64-bit --我采用的是最小安装
  VMWare虚拟机4个,计划部署分配如下:
  192.168.181.121 nameNode
192.168.181.122 dataNode
192.168.181.123 dataNode
192.168.181.124 dataNode

各dataNode机器,都需要安装jdk和ssh,同时要将nameNode上安装的hadoop分发到各节点机器,位置、环境变量等尽量保持与nameNode一致。

  

1、安装基础工具
[java] view plaincopy


  • yum-yinstallwget
  • yum-yinstallmake
  • yum-yinstallopenssh*

  

  2、安装JDK

将下载源码包jdk-7u4-linux-x64.tar.gz

放到目录:/usr/lib/jvm下(这里位置目录可以自己定义,JDK环境变量需要对应)


直接解压:
  
[java] view plaincopy


  • tarzxvfjdk-7u4-linux-x64.tar.gz

3、安装hadoop-1.0.3.tar.gz
3.1、将下载包解压到根目录tar xzvf hadoop-1.0.3.tar.gz
3.2、修改hadoop-env.sh配置
[java] view plaincopy



  • viconf/hadoop-env.sh


# 找到JAVA_HOME设置:
[java] view plaincopy


  • #Thejavaimplementationtouse.Required.
  • exportJAVA_HOME=/usr/lib/jvm/jdk1.7.0_04


# 在文件末尾加以下内容:
# 取消环境变量$HADOOP_HOME过时的警告
[java] view plaincopy


  • exportHADOOP_HOME_WARN_SUPPRESS=1


4、配置环境变量(集群节点都要配置环境变量)
[java] view plaincopy


  • vi/etc/profile

在文件中末尾加入以下内容:
[java] view plaincopy


  • exportJAVA_HOME=/usr/lib/jvm/jdk1.7.0_04
  • exportPATH=$JAVA_HOME/bin:$PATH
  • exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • exportHADOOP_HOME=/hadoop-1.0.3
  • exportPATH=$PATH:$HADOOP_HOME/bin

让环境变量生效
[java] view plaincopy


  • source/etc/profile

5、多节点集群配置
5.1、设置conf/masters文件内容
  指定masterNode,可以用IP,也可以用机器名,masters文件配置将决定哪台机器是secondaryNameNode,准确的说这个文件名起的不对,它应该叫secondaries。
  
[java] view plaincopy


  • viconf/masters


  • 192.168.181.221#secondaryNameNode

  其中192.168.181.221这个节点既是dataNode,同时也是secondaryNameNode
之前我这用的是默认的localhost,结果验证访问:http://192.168.181.221:50070/时报http-404错误,估计是域名解析的问题,网上推荐,masters和slaves文件里,使用机器名,这里我用IP。


5.2、设置conf/slaves文件内容,指定slavesNodes
[java] view plaincopy


  • viconf/slaves

  • 192.168.181.222#dataNode
  • 192.168.181.223#dataNode
  • 192.168.181.224#dataNode

指定哪些机器为从节点,用于存储数据块。

5.3、配置文件:conf/hdfs-site.xml
[java] view plaincopy


  • <?xmlversion="1.0"?>
  • <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>


  • <!--Putsite-specificpropertyoverridesinthisfile.-->


  • <configuration>
  • <property>
  • <name>dfs.name.dir</name>
  • <value>/HadoopRun/name1,/HadoopRun/name2</value>
  • </property>
  • <property>
  • <name>dfs.data.dir</name>
  • <value>/HadoopRun/data1,/HadoopRun/data2</value>
  • </property>
  • <property>
  • <name>dfs.replication</name>
  • <value>3</value>
  • </property>
  • </configuration>


配置文件参数说明:
dfs.name.dir:NameNode上的本地文件路径,用于持久存储命名空间和日志信息文件等内容。该参数可以有多个值,值之间用逗号分割,表示文件映射关系信息将会被复制到每个目录中做冗余备份。

dfs.data.dir:DataNode上的本地文件路径,用于存放文件数据块。该参数可以有多个值,值之间用逗号分割,表示文件数据块将会被复制到每个目录中做冗余备份,通常配置为不同的设备

注意:这里的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题

dfs.replication:表示文件数据块要冗余备份的数量,默认值为3


5.4、配置文件:conf/mapred-site.xml
[java] view plaincopy


  • <?xmlversion="1.0"?>
  • <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>


  • <!--Putsite-specificpropertyoverridesinthisfile.-->


  • <configuration>
  • <property>
  • <name>mapred.job.tracker</name>
  • <value>192.168.181.221:9001</value>
  • </property>
  • <property>
  • <name>mapred.local.dir</name>
  • <value>/HadoopRun/var</value>
  • </property>


  • </configuration>

配置文件参数说明:
mapred.job.tracker:JobTracker(任务分配管理)的主机(或者IP)和端口

mapred.local.dir:本地文件路径,用逗号分割的路径列表,是Map/Reduce临时数据存放的地方。

5.5、配置文件:conf/core-site.xml
[java] view plaincopy


  • <?xmlversion="1.0"?>
  • <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>


  • <!--Putsite-specificpropertyoverridesinthisfile.-->


  • <configuration>
  • <property>
  • <name>fs.default.name</name>
  • <value>hdfs://192.168.181.221:9000</value>
  • <description>
  • NameNode的URI路径,格式:hdfs://主机名:端口/
  • </description>
  • </property>
  • <property>
  • <name>fs.checkpoint.period</name>
  • <value>3600</value>
  • <description>
  • 进行checkpoint的周期时间间隔,单位:秒
  • </description>
  • </property>
  • <property>
  • <name>fs.checkpoint.size</name>
  • <value>67108864</value>
  • <description>
  • 日志文件达到这个上限值时,将进行一次强制checkpoint操作,单位:byte
  • </description>
  • </property>
  • <property>
  • <name>hadoop.tmp.dir</name>
  • <value>/HadoopRun/tmp</value>
  • <description>
  • Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。/hadoopRun/tmp这里给的路径不需要创建会自动生成。
  • </description>
  • </property>
  • </configuration>



6、使用ssh公钥密钥自动登陆linux服务器
实现原理
使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是
首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)
然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥
当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了

这里nameNode服务器需要ssh无密码访问所有dataNode服务器。

6.1、在metaServer机器上生成公钥密钥对
问题:初次生成密钥时出错
[java] view plaincopy


  • [iyunv@gifer.ssh]#ssh-keygen
  • Generatingpublic/privatersakeypair.
  • Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):
  • Enterpassphrase(emptyfornopassphrase):
  • Entersamepassphraseagain:
  • open/root/.ssh/id_rsafailed:Permissiondenied.
  • Savingthekeyfailed:/root/.ssh/id_rsa.


SELINUX=enforcing问题导致密钥创建失败
[java] view plaincopy


  • vi/etc/selinux/config

[java] view plaincopy


  • SELINUX=enforcing

改成[java] view plaincopy


  • SELINUX=disabled

保存重启机器后,再生成。
[java] view plaincopy


  • [iyunv@gifer/]#ssh-keygen-trsa
  • Generatingpublic/privatersakeypair.
  • Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):
  • Enterpassphrase(emptyfornopassphrase):
  • Entersamepassphraseagain:
  • Youridentificationhasbeensavedin/root/.ssh/id_rsa.
  • Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.
  • Thekeyfingerprintis:
  • 98:3c:31:5c:23:21:73:a0:a0:1f:c6:d3:c3:dc:58:32root@gifer
  • Thekey'srandomartimageis:
  • +--[RSA2048]----+
  • |.E.=.o|
  • |.o=@o.|
  • |.**=|
  • |ooo=|
  • |.=S|
  • |.|
  • ||
  • ||
  • ||
  • +-----------------+

成功后,目录下会多出两个文件:
私钥文件:id_raa
公钥文件:id_rsa.pub

6.2、将公钥文件id_rsa.pub内容放到authorized_keys中
将生成的公钥文件默认在/root/.ssh/目录下
[java] view plaincopy


  • [iyunv@gifer.ssh]#catid_rsa.pub>>authorized_keys

将文件内容追加到authorized_keys文件中,如果文件authorized_keys不存在,会自动创建。

同时,将id_rsa.pub文件内容,分发一份到其它dataNode机器
[java] view plaincopy


  • [iyunv@gifer.ssh]#ssh-copy-id-iid_rsa.pubroot@192.168.181.222

  

  也可以使用scp命令进行复制
[java] view plaincopy


  • [iyunv@gifer.ssh]#scpauthorized_keysroot@192.168.181.222:/root/.ssh/


6.3、设置权限
  .ssh 文件夹权限:700
authorized_keys文件权限:600


6.5、验证ssh登录是否成功
[java] view plaincopy


  • [iyunv@gifer.ssh]#sshroot@192.168.181.218
  • Lastlogin:MonMay2118:24:212012from192.168.181.1

  表示成功
  

root@192.168.181.218's password: //如果还提示要输入密码,说明配置不成功,这个很可能是权限的问题


7、启动hadoop前,检查配置
7.1、将部署进行分发
使用scp命令,将弄好的hadoop-1.0.3文件夹复制一份,分发到各dataNode节点相同目录下:
[java] view plaincopy


  • [iyunv@gifer/]#scp-rhadoop-1.0.3192.168.181.222:/

这里我当前192.168.181.221机器文件夹hadoop-1.0.3在根目录下,所以192.168.181.222上也是放根目录。scp 参数 -r 表示,如果目标目录已经存在文件,就覆盖它。否则会报错:not a regular file

如果配置做了修改,需要对更改的配置文件重新发布到各节点即可:
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#scp-r/hadoop-1.0.3/conf192.168.181.222:/hadoop-1.0.3/



7.2、打开以下防火墙端口或关闭防火墙

图安全——开端口(所有节点机器,包括namenode):
[java] view plaincopy


  • /sbin/iptables-IINPUT-ptcp--dport9000-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport9001-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport37974-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport38840-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport49785-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport50030-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport50070-jACCEPT
  • /sbin/iptables-IINPUT-ptcp--dport50090-jACCEPT
  • serviceiptablessave

  查看防火墙信息

[java] view plaincopy


  • serviceiptablesstatus


图省事——关防火墙
[java] view plaincopy


  • serviceiptablesstop


8、安装启动hadoop系统
8.1、格式化一个新的分布式文件系统
[java] view plaincopy


  • [iyunv@masterNode/]#cdhadoop-1.0.3
  • [iyunv@masterNodehadoop-1.0.3]#bin/hadoopnamenode-format
  • 12/05/2313:36:17INFOnamenode.NameNode:STARTUP_MSG:
  • /************************************************************
  • STARTUP_MSG:StartingNameNode
  • STARTUP_MSG:host=localhost/127.0.0.1
  • STARTUP_MSG:args=[-format]
  • STARTUP_MSG:version=1.0.3
  • STARTUP_MSG:build=https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0-r1335192;compiledby'hortonfo'onTueMay820:31:25UTC2012
  • ************************************************************/
  • Re-formatfilesystemin/hadoop_home/name1?(YorN)y
  • Formatabortedin/hadoop_home/name1
  • 12/05/2313:36:29INFOnamenode.NameNode:SHUTDOWN_MSG:
  • /************************************************************
  • SHUTDOWN_MSG:ShuttingdownNameNodeatlocalhost/127.0.0.1
  • ************************************************************/


看到以上输出表示格式化失败!格式化失败的原因是:我在目录/hadoop_home/下预先创建了文件夹:name1,所以出错了。这个格式化时会自动生成。

[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/hadoopnamenode-format
  • 12/05/2403:21:29INFOnamenode.NameNode:STARTUP_MSG:
  • /************************************************************
  • STARTUP_MSG:StartingNameNode
  • STARTUP_MSG:host=localhost/127.0.0.1
  • STARTUP_MSG:args=[-format]
  • STARTUP_MSG:version=1.0.3
  • STARTUP_MSG:build=https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0-r1335192;compiledby'hortonfo'onTueMay820:31:25UTC2012
  • ************************************************************/
  • 12/05/2403:21:29INFOutil.GSet:VMtype=64-bit
  • 12/05/2403:21:29INFOutil.GSet:2%maxmemory=19.33375MB
  • 12/05/2403:21:29INFOutil.GSet:capacity=2^21=2097152entries
  • 12/05/2403:21:29INFOutil.GSet:recommended=2097152,actual=2097152
  • 12/05/2403:21:29INFOnamenode.FSNamesystem:fsOwner=root
  • 12/05/2403:21:29INFOnamenode.FSNamesystem:supergroup=supergroup
  • 12/05/2403:21:29INFOnamenode.FSNamesystem:isPermissionEnabled=true
  • 12/05/2403:21:29INFOnamenode.FSNamesystem:dfs.block.invalidate.limit=100
  • 12/05/2403:21:29INFOnamenode.FSNamesystem:isAccessTokenEnabled=falseaccessKeyUpdateInterval=0min(s),accessTokenLifetime=0min(s)
  • 12/05/2403:21:29INFOnamenode.NameNode:Cachingfilenamesoccuringmorethan10times
  • 12/05/2403:21:30INFOcommon.Storage:Imagefileofsize110savedin0seconds.
  • 12/05/2403:21:30INFOcommon.Storage:Storagedirectory/hadoop_home/name1hasbeensuccessfullyformatted.
  • 12/05/2403:21:30INFOcommon.Storage:Imagefileofsize110savedin0seconds.
  • 12/05/2403:21:30INFOcommon.Storage:Storagedirectory/hadoop_home/name2hasbeensuccessfullyformatted.
  • 12/05/2403:21:30INFOnamenode.NameNode:SHUTDOWN_MSG:
  • /************************************************************
  • SHUTDOWN_MSG:ShuttingdownNameNodeatlocalhost/127.0.0.1
  • ************************************************************/

  格式化分布式文件系统成功。
  

8.2、启动hadoop服务
启动hdfs守护进程
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/start-dfs.sh
  • startingnamenode,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-namenode-masterNode.out
  • 192.168.181.224:startingdatanode,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node3.out
  • 192.168.181.222:startingdatanode,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node1.out
  • 192.168.181.223:startingdatanode,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node2.out
  • 192.168.181.221:startingsecondarynamenode,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-secondarynamenode-masterNode.out


启动mapreduce守护进程
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/start-mapred.sh
  • startingjobtracker,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-jobtracker-masterNode.out
  • 192.168.181.223:startingtasktracker,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node2.out
  • 192.168.181.222:startingtasktracker,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node1.out
  • 192.168.181.224:startingtasktracker,loggingto/hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node3.out

注:对于命令bin/start-all.sh(启动所有守护进程)在hadoop-1.0.3版本中已不推荐使用了。

8.3、验证安装是否成功
  使用jps命令查看启动的守护进程有哪些:
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#jps
  • 12275NameNode
  • 12445SecondaryNameNode
  • 12626Jps
  • 12529JobTracker


  • [iyunv@node3~]#jps
  • 6621DataNode
  • 6723TaskTracker
  • 6819Jps


另外可通过浏览器访问:  NameNode      http://192.168.181.221:50070/
JobTracker http://192.168.181.221:50030/

8.4、关闭hadoop服务
关闭hdfs守护进程
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/stop-dfs.sh
  • stoppingnamenode
  • 192.168.181.222:stoppingdatanode
  • 192.168.181.224:stoppingdatanode
  • 192.168.181.223:stoppingdatanode
  • 192.168.181.221:stoppingsecondarynamenode


关闭mapreduce守护进程
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/stop-mapred.sh
  • stoppingjobtracker
  • 192.168.181.222:stoppingtasktracker
  • 192.168.181.224:stoppingtasktracker
  • 192.168.181.223:stoppingtasktracker

注:对于命令bin/stop-all.sh(关闭所有守护进程)在hadoop-1.0.3版本中已不推荐使用了。


8.5、文件上传测试

略……


安装过程遇到的问题:
1、想在分布式文件系统中创建一个目录input,结果报错:
[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/hadoopfs-mkdirinput
  • mkdir:org.apache.hadoop.hdfs.server.namenode.SafeModeException:Cannotcreatedirectory/user/root/input.Namenodeisinsafemode.

解决办法:关闭安全模式[java] view plaincopy


  • [iyunv@masterNodehadoop-1.0.3]#bin/hadoopdfsadmin-safemodeleave
  • SafemodeisOFF



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-309927-1-1.html 上篇帖子: Hadoop的配置详解 下篇帖子: hadoop-CDH版环境搭建(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表