分布式集群搭建(hadoop2.6.0+CentOS6.5)
在实际安装之前,先简单说下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/network
NETWORKING=yes
HOSTNAME=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 hadoop1
192.168.10.12 hadoop2
192.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.sh
vi hadoop-env.sh
export 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.xml
vi 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/proflie
export HADOOP_HOME=/opt/hadoop-2.6.0
export 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 -report
http://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面)
分布式集群搭建(hadoop2.6.0+CentOS6.5)的更多相关文章
- Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04
前段时间搭建Hadoop分布式集群,踩了不少坑,网上很多资料都写得不够详细,对于新手来说搭建起来会遇到很多问题.以下是自己根据搭建Hadoop分布式集群的经验希望给新手一些帮助.当然,建议先把HDFS ...
- Hadoop集群搭建-Hadoop2.8.0安装(三)
一.准备安装介质 a).hadoop-2.8.0.tar b).jdk-7u71-linux-x64.tar 二.节点部署图 三.安装步骤 环境介绍: 主服务器ip:192.168.80.128(ma ...
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建
一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...
- Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)--------hadoop环境的搭建
Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)------https://blog.csdn.net/pucao_cug/article/details/71698903 ...
- Hadoop完全分布式集群搭建
Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...
- hbase完整分布式集群搭建
简介: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop2.8 ha 集群搭建 hbase完整分布式集群搭建 hadoop完整集群遇到问题汇总 Hb ...
- 大数据之Hadoop完全分布式集群搭建
1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...
- HBase完全分布式集群搭建
HBase完全分布式集群搭建 hbase和hadoop一样也分为单机版,伪分布式版和完全分布式集群版,此文介绍如何搭建完全分布式集群环境搭建.hbase依赖于hadoop环境,搭建habase之前首先 ...
随机推荐
- Android Studio 之 no render target selected
今天第一次使用android studio, 莫名其妙出现 no render target selected的错误,没有设计界面, 各种百度之后在 stackoverflow.com/questio ...
- ThinkPHP的D方法和M方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
在需要使用tab来选中并输入内容的地方,添加: <#输入待覆盖的内容#>
- css样式表分类、选择器分类、css基础样式
1 . 样式表 Cascading Style Sheet css优势: 内容与表现分离 网页的表现统一,容易修改 丰富的样式,使网页布局更加灵活 减少网页代码量,增加网页的浏览速度,节省 ...
- ZeroMQ接口函数之 :zmq_poll - I/O多路技术
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_poll zmq_poll(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_poll ...
- ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html 本文地址 :http://www.cnblogs.com/fengbo ...
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...
- java Properties 配置信息类
Properties(配置信息类):主要用于生产配置文件和读取配置文件信息. ----> 是一个集合类 继承HashTable 存值是以键-值的方式. package com.beiwo.io; ...
- oracle数据导入/导出
Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据 ...
- PHP关于反斜杠处理函数addslashes()和stripslashes()的用法
addslashes() 例子: <?php $str = "Who's John Adams?"; echo $str . " This is not safe ...