Hadoop分布式集群搭建案例步骤(也可以叫分布式文件系统)
一:创建分布式集群环境
二:设置静态ip以及主机名与映射关系
三:创建用户、配置SSH无密登录
四:子机dn操作
五:配置主机jdk、hadoop的环境以及hadoop文件
六:打包、远程传输至子机
七:启动hadoop集群以及运行案例

基于hadoop的整体分布式模块交互
1)分布式系统的定义
  把数据放到一个服务器集群上面,分为:主控服务器(Master/NameNode),数据服务器(ChunkServer/DataNode),和客户服务器Client.HDFS和GFS都是按照这个架构模式来搭建的
 2)核心内容文件的目录结构独立存储在一个NameNode上,二具体文件数据,拆分成若干块,冗余的存放在不
同的数据服务器上(DataNode)。存储目录结构的主控服务器,在GFS中称为Master,在HDFS中称为Na
meNode
基于Hadoop的HDFS
 HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,比如打开、关闭、重命名文件和目录;同时决定block到具体Datanode节点的映射
 1)NameNode存放两种信息:文件和block的映射、block和DataNode的映射。文件和block的映射,固化在磁盘上。而block和DataNode的映射在DataNode启动时上报给NameNode,即blockReport
2)HDFS协议ClientDatanodeProtocol :一个客户端和datanode之间的协议接口,用于数据块恢复;ClientProtocol :client与Namenode交互的接口,所有控制流的请求均在这里,如:创建文件、删除文件等;DatanodeProtocol : Datanode与Namenode交互的接口,如心跳、blockreport等;NamenodeProtocol :SecondaryNode与Namenode交互的接口;InterDatanodeProtocol:用于DataNode和DataNode通信

准备工作:

1)JDK下载、Hadoop下载:作用是为海量数据提供(HDFS)分布式存储和(YARN)分布式计算
博主这里的jdk是1.8的版本,hadoop是2.7,有的单位还会用hadoop-2.6.0-cdh5.7.0看个人需要去下载
2)红色字体是易疏忽出错的地方要注意
一:创建分布式集群环境
我这里克隆了一个主机(Hadoop NN)两个子机(DN138/139)
二:设置静态ip以及主机名与映射关系
2.1)设置静态ip:/etc/sysconfig/network-scripts/ifcfg-ens33
  TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=e950fdd1-ae15-4a50-ae68-7b852d8e7e98DEVICE=ens33ONBOOT=yesPEERDNS=yesPEERROUTES=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_PRIVACY=noNETMASK=255.255.255.0NM_CONTROLLED=noGATEWAY=192.168.229.2DNS1=202.106.0.20IPADDR=192.168.229.137

我这里克隆的时候就已经配置了ens33文件,所以我只用在最后一行追加IPADDR就可以
echo IPADDR=192.168.229.137 >> /etc/sysconfig/network-scripts/ifcfg-ens33
重启配置文件:service network restart
检查IP以及网络是否可以连接:ping ip地址 / ping www.baidu.com
如果外网连接失败编辑resolv.conf文件配置nameserver IP或者8.8.8.8
# vi /etc/resolv.conf
2.2)设置主机名
echo 主机名 >> /etc/hostname(我这里设置的主机名是nn137)
2.3)配置映射
语法:echo IP 主机名 >> /etc/hosts
echo 192.168.229.137 nn37 >> /etc/hosts
echo 192.168.229.138 dn138 >> /etc/hosts
echo 192.168.229.139 dn139 >> /etc/hosts
备注:有多少台机子就配多少关系映射
2.4)重启连接:reboot
2.5)修改本地windows的映射
打开hosts文件在最下面手动加上IP 主机名,然后我们可以发现在cmd命令窗口ping 主机名也可以ping 通了
三:创建用户、配置SSH无密登录
3.1)创建hadoop用户组:useradd -m hadoop -G root -s /bin/bash
3.2)设置hadoop用户密码:echo hadoop | passwd 密码 --stdin(免输两次)
也可以用passwd hadoop 进行设置密码
设置hadoop用户权限,命令visudo 92行copy一下,把root改成hadoop
3.3)SSH无密码登录:
切换到hadoop用户下,如果没有.ssh目录输入ssh localhost命令即可

进到.ssh目录输入ssh-keygen -t rsa生成秘钥(注意子机dn也要生成秘钥)

生成之后会发现多了两个文件,其中id_rsa.pub里面存放的就是生成后的秘钥
然后在主机创建一个authorized_keys文件,并修改其权限

将id_rsa.pub追加到authorized_keys中并发送给dn,命令如下:
cat id_rsa.pub >> authorized_keys
scp id_rsa.pub hadoop@dn138:~/.ssh
scp id_rsa.pub hadoop@dn139:~/.ssh
最后成功无密登录

四:子机dn
子机dn要做的准备是:
4.1)二:设置静态ip以及主机名与映射关系
4.2)三:创建用户
五:配置主机jdk、hadoop的环境以及hadoop文件
5.1)在hadoop用户组下创建一个文件夹用来存放jdk以及hadoop,稍后配置好环境还要进行打包远程传输到子机系统上,这样节省了很多时间
5.2)将下载好的jdk、hadoop安装包上传至app下进行解压重命名然后强制删除tar.gz安装包
5.3)配置jdk、hadoop环境:
切换hadoop用户下编辑 vi ~/.bashrc
#jdk
export JAVA_HOME=/home/hadoop/app/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
#hadoop
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

重新加载bashrc文件,让环境变量立即生效,然后查看环境是否配置成功
# source ~/.bashrc
5.4)hadoop配置文件
(注解:先把/app/hadoop/etc/hadoop目录下的mapred-site.xml.template 进行重命名方便后续查找。命令mv mapred-site.xml.template mapred-site.xml)

core-site.xml 配置文件服务类型:hdfs
hdfs-site.xml 备份数,数据存储位置
mapred-site.xml 启动yarn
yarn-site.xml 配置yarn的主机地址
slaves 配置所有子机(datanode)的主机名称
5.4.1)core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名:9000</value>
</property>
</configuration>
5.4.2)hdfs-site.xml
(备份数默认是3,意思是一台主机三台从机,因为这里是一台主机两台从机所以这里是2)
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>主机名:50070</value>
</property>
<!-- NameNode结点存储hadoop文件系统信息的本地系统路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/app/hadoop/tmp/name</value>
</property>
<!-- DataNode结点被指定要存储数据的本地文件系统路径,这个值只对NameNode有效,DataNode并不需要使用到它 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/app/hadoop/tmp/data</value>
</property>
</configuration>
5.4.3)mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.4.4)yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主机名</value>
</property>
</configuration>
5.4.5)slaves(子机名)

六:打包、远程传输至子机
6.1)打包:tar -czf 目录名tar.gz 打包名
6.2)传输:scp 打包名 子机名 :~/
6.3)将 ~/.bashrc 配置文件传输到子机:scp ~/.bashrc 子机名 :~/
6.4)到子机(dn138/139)进行解压配置,重启配置文件
七:启动hadoop集群以及简单案例
7.1)关闭防火墙(子机照做)
systemctl disable firewalld
systemctl stop firewalld
7.2)进程守护(子机照做)
# setenforce 0
# vi /etc/selinux/config 设置SELINUX=disabled
7.3)启动hadoop集群
7.3.1)切换到hadoop用户下执行如下命令
hdfs namenode -format(第一次启动一定要对hadoop进行文件系统格式化(主机上),否则hadoop配置文件就得重新配置了)
status 显示为0,表示成功
7.3.2)启动namenode,datanode
hadoop/sbin/目录下运行sh start-dfs.sh(关闭为sh stop-dfs.sh)
jps查看是否启动成功,成功之后可以在主机上看到Jps、NameNode、SecondaryNameNode三个属性,子机上可以看到Jps、DataNode。然后就可以访问http://nn137:50070,可以看到hadoop集群的信息。这是我的主机名也可以用ip,你要查看换成你的主机ip

7.3.3)启动resourceManager和nodeManager以及secondary(集群中所有资源的统一管理和分配)
sh start-yarn.sh(关闭为sh stop-yarn.sh)
7.3.4)启动任务日志追踪
sh mr-jobhistory-daemon.sh start historyserver(关闭为sh mr-jobhistory-daemon.sh stop historyserver)
如果成功会在主机的节点上看到多了ResourceManager以及JobHistoryServer,子机的节点上会多一个NodeManager
7.3.5)执行分布式的事例
输入命令:hadoop fs -ls / 将显示出文件系统中的根目录下的文件
创建用户目录:hadoop fs -mkdir -p /user/had oop
再创建一个:hadoop fs -mkdir -p datas
刷新页面点击Browse the file system可以看见我们创建的用户目录
namenode、datanode在本机上存储的位置cd /tmp/hadoop-ubuntu/dfs/name/current  ,namenode的当前信息,里面的fsimage_000...存的就是文件系统的镜像文件fsimage_00...,md5为校验版本
然后上传文件到datas目录下运行MapReduce作业,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后将结果输出到 output 文件夹中
mapreduce目录:hadoop/share/hadoop/mapreduce
统计每个单词出现的次数:hadoop jar 文件名称 grep datas output 'dfs[a-z.]+'
查看结果:hadoop fs -text output /*

统计每个单词出现的次数:hadoop jar 文件名称 wordcount datas output1(跟上面所用到的方法不一样,但是结果是一样的)
查看结果:hadoop fs -text output1/*
统计property出现的次数也包括注释:hadoop jar 文件名称 grep datas output2 property
查看结果:hadoop fs -text output2/*
运行时输出与伪分布式的类似,会显示Job的进度,时间可能较长,耐心等待,如果长时间没有看到进度,可以尝试如下方式解决(具体操作找度娘吧) 
重启Hadoop集群,再次尝试 
增大虚拟机内存 
更改 YARN 的内存配置 
在Job进度中出现“Successfully”表示成功
成功后,我们可以在浏览器中访问http://nn137:8088/cluster,查看任务的运行信息
这里我们可以我们上面统计的三个信息
也可以在如下页面下载统计结果
遇到的问题以及解决思路:
1):是否对Windows客户端中的host文件做host解析。到此路径下   C:\Windows\System32\drivers\etc\hosts  打开此文件,做host解析。当然,也需要在Linux环境下,做host文件解析
2):查看是否关闭selinux。cat etc/sysconfig/selinux。如果 没有关闭,执行下面的命令:sed -i 's#enforcing#disabled#' /etc/sysconfig/selinux
3):检查iptables是否关闭:
/etc/init.d/iptables status#查看是否关闭:
/etc/init.d/iptables stop#关闭iptables
chkconfig iptables off#开机关闭
4):查看你的$HADOOP_HOME/etc/hadoop下的core-site.xmlhdfs-site.xml是否配置好
5):查看你的$HADOOP_HOME/etc/hadoop下的slaves(子机名)配置文件是否正确
hadoop连接方式配置-fs操作-put
多个文件合并cat:cat core-site.xml ;cat yarn-site.xml ;cat hdfs-site.xml
选择启动哪种配置模式:
ln -s hadoop_pseudo hadoop(前提是剔除环境变量)
剔除环境变量:export HADOOP_CONF_DIR=
创建用户目录:
查看fs的根目录:hadoop fs -ls /    
递归查看fs的根目录:hadoop fs -ls -R /
-p是创建多级目录:hadoop fs -mkdir -p /user/$USER  
删除目录及目录下的所有文件:fs -rm -R /usr
可查看版本信息:cat VERSION    
查看帮助:
查看fs的所有帮助信息:hadoop fs
查看put的具体信息:hadoop fs -help put
往分布式文件系统上放文件:
1 先本地建一个hello.txt
cd ~
touch hello.txt
echo "hello world" >> hello.txt
hadoop fs -put hello.txt /user/ubuntu
hadoop fs -ls -R   ///该指令直接会查看/user/ubuntu/下的文件(非文件夹)
hadoop fs -ls -R /     ///查看是否有hello.txt 

Hadoop分布式集群搭建以及案例运行-fs操作相关推荐

  1. hadoop分布式集群搭建

    hadoop集群搭建前的准备(一定要读):https://blog.51cto.com/14048416/2341450 hadoop分布式集群搭建: 1. 集群规划: 2.具体步骤: (1)上传安装 ...

  2. 【转】Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04

    https://www.cnblogs.com/caiyisen/p/7373512.html 前段时间搭建Hadoop分布式集群,踩了不少坑,网上很多资料都写得不够详细,对于新手来说搭建起来会遇到很 ...

  3. Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04

    前段时间搭建Hadoop分布式集群,踩了不少坑,网上很多资料都写得不够详细,对于新手来说搭建起来会遇到很多问题.以下是自己根据搭建Hadoop分布式集群的经验希望给新手一些帮助.当然,建议先把HDFS ...

  4. Hadoop分布式集群搭建完全详细教程

    Hadoop分布式集群环境搭建步骤如下 实验环境: 系统:win7 内存:8G(因要开虚拟机,内存建议不低于8G) 硬盘:建议固态 虚拟机:VMware 12 Linux:Centos 7 jdk1. ...

  5. Hadoop分布式集群搭建完全教程

    Hadoop分布式集群环境搭建步骤如下 实验环境: 系统:win7 内存:8G(因要开虚拟机,内存建议不低于8G) 硬盘:建议固态 虚拟机:VMware 12 Linux:Centos 7 jdk1. ...

  6. Zookeeper之Linux分布式集群搭建及客户端shell命令操作

    一.准备至少三台Linux服务器及对应的jdk环境 1.服务器及jdk环境准备 服务器:至少三台Linux服务器 JDK环境:三台Linux服务器上都需要安装好jdk环境(jdk环境安装参考我的博客: ...

  7. Hadoop分布式集群搭建详细过程

    1. 首先用五台机器搭建分布式,一个为master,剩下四个分别为slave01.slave02.slave03, slave04. 2. 修改机器名 五台机器分别都执行sudo vim /etc/h ...

  8. Hadoop分布式集群搭建(完整版)

    一.前期准备工作 VMware和Centos7下载安装教程: https://blog.csdn.net/m0_59209350/article/details/117793482 XShell和Xf ...

  9. hadoop分布式集群搭建,包含网络配置-hadoop3环境

    先准备三台或者五台虚拟机(我这里写三台,实际我用的五台) 在安装centos时可以在选择(最小安装还是图形化界面处)有配置网络的,把网络先配置好,这样就不需要在重新配置了 先配置一台主机,后两台克隆即 ...

最新文章

  1. 中国唯一的“国际数字化转型专家”,阿里云获Forrester认可
  2. Object类toString()和equals()方法剖析
  3. Java的应用领域有哪些呢?分享这几个
  4. 京东技术全景图首次展示 四大重磅智能技术驱动产业未来
  5. jetpack-livedata2-SafeIterableMap
  6. Bootstrap 多媒体对象
  7. 弱电工程施工规划实施
  8. mpa和pis_压力单位MPa/psi/bar之间的换算?
  9. 【UCSC Genome Browser】- 小技巧
  10. 计算机专业申请phd美国,揭秘美国大学计算机专业PHD申请难度有多大
  11. 申请免费领取阿里云服务器
  12. Can't open /dev/sda3 exclusively. Mounted filesystem?解决办法
  13. 客户关系管理之会员管理
  14. 网络爬虫笔记【4】 掌握获取 Ajax 异步加载网页内容的方法
  15. 技术:车牌识别摄像机的应用,无人值守洗车房解决方案
  16. 宁波大学计算机非全,宁波大学考研:全日制和非全日制的6大区别,很多人不知道...
  17. 【Flutter从入门到实战】⑪、豆瓣案例-1、星星评分Widget、虚线Widget、TabbarWidget、BottomNavigationBarItem的封装、初始化配置抽取
  18. 一键解决PPT的动画播放和动画排序问题!
  19. 【基础知识-高数-1】——雅可比行列式与“可逆性”证明一则
  20. 2008 R2 Remote Desktop Server driver RDPDR.sys cannot be started, error 577

热门文章

  1. Arch yaourt 安装
  2. 计算机组成:真正理解“乘法器”和“除法器”
  3. VS2015+opencv3.1+WIN7 计算机中丢失MSVCR120D.dll错误解决方法
  4. 惠化洞(或双门洞)[혜화동 (혹은 쌍문동)]——朴宝蓝[박보람]
  5. 为什么不是每个人都过着他梦想中的生活呢?
  6. c语言 ascii码转成字符串,ASCII码与字符串的相互转换
  7. sicilyOJ 11珠海赛重现 C Unlosing Ranger V.S. Darkdeath Evilman(DP)
  8. #11.11 个人排位赛round2_A.Diana and Liana(CodeForces 1121D)
  9. 华为云APIG限流控制
  10. oracle 一个表上的多个触发器的执行顺序