分布式集群搭建(hadoop2.6.0+CentOS6.5) - 牛仔裤的夏天 - 博客园


本站和网页 https://www.cnblogs.com/wonglu/p/5746861.html#autoid-9-5-0 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

分布式集群搭建(hadoop2.6.0+CentOS6.5) - 牛仔裤的夏天 - 博客园
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式 ...
退出登录
注册
登录
代码改变世界
Cnblogs
Dashboard
Login
Home
Contact
Gallery
Subscribe
RSS
牛仔裤的夏天
虚怀若谷,大智若愚
分布式集群搭建(hadoop2.6.0+CentOS6.5)
2016-08-07 18:52
牛仔裤的夏天
阅读(728)
评论(0)
编辑
收藏
举报
摘要:之前安装过hadoop1.2.1集群,发现比较老了,后来安装cloudera(hadoop2.6.0),发现集成度比较高,想知道原生的hadoop什么样子,于是着手搭建一个分布式集群(三台),方便与cloudera的安装进行对比,来更加深入学习Hadoop整个生态系统。一开始安装的CentOS7,发现好多命令都变了,时间成本比较高,为了以后少些麻烦,还是果断换回CentOS6.5了,hadoop果断选择2.6.0了。太新的版本需要额外时间来了解,对于加班较多的来说,学习成本太高了。在安装过程,遇到了好多细节问题,真是“纸上得来终觉浅,绝知此事要躬行”!
在实际安装之前,先简单说下VMWare的网络模式:
■ VMNet1:使用的是host-only的链接模式,即虚拟机只能与主机构成内部通信,无法对外网进行访问
■ VMNet0:模式:使用桥接模式,安装VM后,在VM里建立虚拟机 默认 就是该模式。
      场景:如果你只是需要一台虚拟机可以和宿主互通,并可以访问外网,此模式即可。
      描述:安装虚拟机系统后不需要调整网络,物理网络中的 “路由” 所包含的DHCP服务器会自动识别该虚拟机并为其分配IP地址。如果没有路由,可以自己手动在系统分配,原则是和宿主机在同一网段并指向相同的网关即可通信。■ VMNet8 模式:NAT网络模式
      场景:在宿主机安装多台虚拟机,和宿主组成一个小局域网,宿主机,虚拟机之间都可以互相通信,虚拟机也可访问外网。例如 搭建 hadoop 集群,分布式服务。
1.hadoop集群规划
192.168.10.11 hadoop1 namenode
192.168.10.12 hadoop2 datanode
192.168.10.13 hadoop3 datanode
2.安装三台CentOS虚拟机,配置网络模式为NAT
本人电脑HP笔记本8G内存,三台虚拟机内存都设为1G,启动时若提示“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”,进bios设置选项“处理器虚拟化技术”为enabled。
打开VMWare,文件->新建虚拟机,选择CentOS7系统,依次点击下一步完成添加虚拟机,三台虚拟机名称依次为:centos6.5_1,centos6.5_2,centos6.5_3.
安装完成后,打开VMWare,编辑->虚拟网络编辑器,修改VMnet8的子网IP为192.168.10.0
点击上图中的“NAT设置”,确认网关为192.168.10.2
回到windows,打开网络和共享中心->更改适配器设置->右键VMnet8->属性,确认IPv4为:192.168.10.1
选中虚拟机 -> 右键设置 -> 网络适配器 - 确认为NAT模式->确定    
测试虚拟机网络,使用ifconfig命令查看ip地址,看到如下:
配置ip地址:vi /etc/sysconfig/network-scripts/ifcfg-eth0
注:ONBOOT="yes",这样在重启的时候会自动启动网卡;BOOTPROTO="dhcp"应改为none,否则设置的ip和看到的会不同;DNS1设置为VMnet8的网关,才可以通过主机访问外网;
重启网络服务:service network restart三台虚拟机依次设置IP为192.168.10.11,192.168.10.12,192.168.10.13至此虚拟机已可以访问外网,windows主机与虚拟机可以互相ping通,并都可以访问外网。原来虚拟机里的网络这么多设置的,学习了。虽然花了好长时间才整好网络,但还是很有满足感的,“绝知此事要躬行”啊!
3.修改三台节点主机名及与IP映射关系
修改主机名:vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=hadoop1
重启网络服务生效
修改主机名和IP的映射关系:vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.11 hadoop1192.168.10.12 hadoop2192.168.10.13 hadoop3
注意:这里需要将每台机器的ip及主机名对应关系都写进去.
4.关闭防火墙
#查看防火墙状态service iptables status#关闭防火墙service iptables stop#查看防火墙开机启动状态chkconfig iptables --list#关闭防火墙开机启动chkconfig iptables off
5.重启Linux
reboot
6.无秘钥认证
(1) ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa(2) cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 把暴露出来的公共密钥按顺序导入authorized_keys中保存(3) chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 注:ssh机制很严谨,对文件的权限要求非常严格,这里需要把.ssh文件夹的权限设置为700(只有所有者有读和写以及执行的权限),authorized_keys的权限设置为600(只有所有者有读和写的权限)(4) ssh hadoop2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh hadoop3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys scp authorized_keys hadoop@HDS02:/home/hadoop/.ssh/ scp authorized_keys hadoop@HDS03:/home/hadoop/.ssh/最终authorized_keys文件要有各个集群服务器的信息 注:前三步在三个节点都执行,第四步在主节点执行。公钥分发完成之后,最后随机选两台服务器,进行无密码登录验证是否异常。各个节点之间的无秘钥认证需要测试通过才能进行下一步
7.NTP时间同步
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。具体思路如下:master节点作为ntp服务器,对所有datanode节点提供时间同步服务。所有datanode节点以master节点为基础同步时间 所有节点安装相关组件:yum install ntp。完成后,配置开机启动:chkconfig ntpd on,检查是否设置成功:chkconfig --list ntpd其中2-5为on状态就代表成功
7.1主节点配置
编辑NTP服务端配置文件ntp.conf,使用local时间作为ntp服务提供给ntp客户端: # vi /etc/ntp.conf #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start 检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功: synchronised to NTP server (xxx.xxx.xxx.xxx) at stratum 4 time correct to within 75 ms polling server every 1024 s 如果出现异常请等待几分钟,一般等待5-10分钟才能同步
7.2配置ntp客户端
编辑所有datenode节点的NTP服务端配置文件ntp.conf,配置server为主节点的主机名或IP: # vi /etc/ntp.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool . # 这里是主节点的主机名或IP server xxx.xxx.xxx.xxx #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst ok保存退出,启动datanode节点的ntp服务,先手动同步一下主节点,通过ntpstat查询是否同步成功: # service ntpd start # ntpdate –u –hadoop1 # ntpstat 注:需要多等待一会儿才可以正常同步时间。
8.安装JDK(三台)
(1)卸载自带openjdk 使用rpm -qa | grep java查询java相关的包,使用rpm -e --nodeps包名卸载 (2)解压jdk包 tar -zxf jdk-7u75-linux-x64.tar.gz –C /opt (3)环境变量配置 vi/etc/profile ##jdk export JAVA_HOME=/opt/jdk1.7.0_75 export JRE_HOME=/opt/jdk1.7.0_75/jre export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib #刷新配置 source /etc/profile (4)JDK版本验证 java -version #which java 检查java安装目录 #env|grep JAVA_HOME 检查是否配置JAVA_HOME 这里遇到一个小问题,我是在window用SecureCRT执行的source,在虚拟机看java版本提示没有,再次source可以看到了:这个文件一般是linux系统中存在,是在开机加载系统时或登录时执行的一个配置文件,其主要功能类似初始化一些环境变量。
9.安装hadoop(三台)
先上传hadoop的安装包到hadoop1上去/soft,使用 tar -zxf hadoop-2.6.0.tar.gz -C /opt解压. 注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop,这里即:/opt/hadoop-2.6.0/etc/hadoop 每台机器服务器都要配置,且都是一样的,配置完一台其他的只需要拷贝,每台机器上的core-site.xml和mapred-site.xml都是配master服务器的hostname.
9.1配置hadoop
第一个:hadoop-env.shvi hadoop-env.shexport JAVA_HOME=/opt/jdk1.7.0_75第二个:core-site.xml<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --><property>  <name>fs.defaultFS</name>  <value>hdfs://hadoop1:9000</value></property>
<property>   <name>io.file.buffer.size</name>   <value>131072</value>   <description>Size of read/write buffer used inSequenceFiles.</description> </property>
<!-- 指定hadoop运行时产生文件的存储目录 --><property>  <name>hadoop.tmp.dir</name>  <value>/opt/hadoop-2.6.0/tmp</value> </property> 注:hadoop访问文件的IO操作都需要通过代码库。因此,在很多情况下,io.file.buffer.size都被用来设置缓存的大小。不论是对硬盘或者是网络操作来讲,较大的缓存都可以提供更高的数据传输,但这也就意味着更大的内存消耗和延迟。这个参数要设置为系统页面大小的倍数,以byte为单位,默认值是4KB,一般情况下,可以设置为64KB(65536byte)。注:hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
第三个:hdfs-site.xml 创建目录:[root@hadoop1 hadoop-2.6.0]# mkdir -p dfs/name[root@hadoop1 hadoop-2.6.0]# mkdir -p dfs/data [root@hadoop1 hadoop-2.6.0]# mkdir -p dfs/namesecondary
修改配置文件 <property>   <name>dfs.namenode.secondary.http-address</name>   <value>hadoop1:50090</value>   <description>The secondary namenode http server address andport.</description> </property>
<property>   <name>dfs.namenode.name.dir</name>   <value>file:///opt/hadoop-2.6.0/dfs/name</value>   <description>Path on the local filesystem where the NameNodestores the namespace and transactions logs persistently.</description> </property>
<property>   <name>dfs.datanode.data.dir</name>   <value>file:///opt/hadoop-2.6.0/dfs/data</value>   <description>Comma separated list of paths on the local filesystemof a DataNode where it should store its blocks.</description> </property> <property>   <name>dfs.namenode.checkpoint.dir</name>   <value>file:///opt/hadoop-2.6.0/dfs/namesecondary</value>   <description>Determines where on the local filesystem the DFSsecondary name node should store the temporary images to merge. If this is acomma-delimited list of directories then the image is replicated in all of thedirectories for redundancy.</description> </property> <!-- 指定HDFS副本的数量 --><property>  <name>dfs.replication</name>  <value>2</value> </property> <property>  <name>dfs.permissions</name>  <value>false</value> </property> 注: 属性“dfs.namenode.name.dir”表示NameNode存储命名空间和操作日志相关的元数据信息的本地文件系统目录,该项默认本地路径为”/tmp/hadoop-{username}/dfs/name”; 属性”dfs.datanode.data.dir“表示DataNode节点存储HDFS文件的本地文件系统目录,由”file://本地目录”组成,该项默认本地路径为”/tmp/hadoop-{username}/dfs/data”。 属性“dfs.namenode.secondary.http-address”表示SecondNameNode主机及端口号(如果无需额外指定SecondNameNode角色,可以不进行此项配置);
第四个:mapred-site.xml mv mapred-site.xml.template mapred-site.xmlvi mapred-site.xml<!-- 指定mr运行在yarn上 --><property>  <name>mapreduce.framework.name</name>  <value>yarn</value> </property>
<property>   <name>mapreduce.jobhistory.address</name>   <value>hadoop1:10020</value>   <description>MapReduce JobHistoryServer IPC host:port</description> </property>
<property>   <name>mapreduce.jobhistory.webapp.address</name>   <value>hadoop1:19888</value>   <description>MapReduce JobHistoryServer Web UI host:port</description> </property> 注:属性“mapreduce.framework.name”表示执行mapreduce任务所使用的运行框架,默认为local,需要将其改为”yarn” 注:Hadoop自带了一个历史服务器,可以查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,可以通过下面的命令来启动Hadoop历史服务器$ sbin/mr-jobhistory-daemon.sh start historyserver。这样我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面。可以查看已经运行完的作业情况。 注:Hadoop2.x中没有jobtracker、tasktracker,改为现在的ResourceManager、NodeManger 第五个:yarn-site.xml<!-- 指定YARN的老大(ResourceManager)的地址 --><property>  <name>yarn.resourcemanager.hostname</name>  <value>hadoop1</value> </property><!-- reducer获取数据的方式 中间数据调度使用的机制 --> <property>  <name>yarn.nodemanager.aux-services</name>  <value>mapreduce_shuffle</value> </property> 注:yarn.nodemanager.aux-services,NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。 [root@hadoop1 opt]# scp -r hadoop-2.6.0/ root@hadoop2:/opt/ [root@hadoop1 opt]# scp -r hadoop-2.6.0/ root@hadoop3:/opt/ 注:这里将配置完的hadoop整个文件复制到hadoop2和hadoop3的时候,用的是cp -r,复制完成后发现hadoop2和hadoop3的文件大小比hadoop大1M,应该一样才对啊,一级一级目录找吧,肯定有不一样的。果然,native的大小不一样,这里有个软链接:当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。要直接cp软链接就需要加-d参数。
9.2配置Slaves文件
只需要namenode节点机,这里的HDM01既做namenode也兼datanode,一般情况namenode要求独立机器,namenode不兼datanode vi /opt/etc/hadoop/slaves,配置如下内容: hadoop2 hadoop3
9.3将hadoop添加到环境变量
vim /etc/proflieexport HADOOP_HOME=/opt/hadoop-2.6.0export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
9.4格式化namenode
hdfs namenode -format 报警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 因为官方提供的lib目录中.so文件是在32位系统下编译的,如果是64位系统,需要自己下载源码在64位上重新编译。下载hadoop-native-64-2.6.0.tar解压替换native文件夹内容。 [root@hadoop1 soft]# tar -xvf hadoop-native-64-2.6.0.tar -C /opt/hadoop-2.6.0/lib/native/
9.5启动hadoop
sbin/start-all.sh 提示已过时,执行stop-all.sh停止。重新启动:先启动HDFS:sbin/start-dfs.sh再启动YARN: sbin/start-yarn.sh
9.6验证是否启动成功使用jps命令验证
查看集群状态: [root@hadoop1 bin]# hdfs dfsadmin -reporthttp://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面)
鉴于写作能力有限,若有描述不当或明显错误的,欢迎指正!
分类 Hadoop
标签 伪分布式
, 集群
, hadoop2.6
刷新评论刷新页面返回顶部
About
www.spiga.com.mx
Copyright 2022 牛仔裤的夏天
Powered by .NET 7.0 on Kubernetes
博客园