Hadoop 集群的三种方式

1,Local(Standalone) Mode 单机模式

  $ mkdir input$ cp etc/hadoop/*.xml input$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'$ cat output/*

解析$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'
input 夹下面的文件 :capacity-scheduler.xml  core-site.xml  hadoop-policy.xml  hdfs-site.xml  httpfs-site.xml  yarn-site.xml

bin/hadoop hadoop 命令
jar 这个命令在jar包里面
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar 具体位置
grep grep 函数
input grep 函数的目标文件夹
output grep 函数结果的输出文件夹
'dfs[a-z.]+' grep 函数的匹配正则条件

直译:将input文件下面的文件中包含 'dfs[a-z.]+' 的字符串给输出到output 文件夹中
输出结果:part-r-00000  _SUCCESS
cat part-r-00000:1 dfsadmin
在hadoop-policy.xml 存在此字符串

 2,Pseudo-Distributed Operation 伪分布式

在 etc/hadoop/core.site.xml 添加以下属性
<
configuration><property><name>fs.defaultFS</name><value>hdfs://hella-hadoop.chris.com:8020</value> hella-hadoop.chris.com是主机名,已经和ip相互映射</property>

还需要覆盖默认的设定,mkdir -p data/tmp
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.5.0/data/tmp</value>   hella-hadoop.chris.com是主机名,已经和ip相互映射
    </property>

垃圾箱设置删除文件保留时间(分钟)
    <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>

</configuration>

etc/hadoop/hdfs-site.xml: 伪分布式1个备份
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
配置从节点
  <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>主机名:50090</value>
    </property> 
</configuration>

 格式化元数据,进入到安装目录下

bin/hdfs namenode -format

启动namenode,所有的命令都在sbin下,通过ls sbin/   可以查看

sbin/hadoop-daemon.sh start namenode    hadoop 的守护线程启动(主数据)

sbin/hadoop-daemon.sh start datanode     启动datanode(从数据)

nameNode都有个web网页,端口50070

创建hdfs 文件夹,创建在用户名下面

bin/hdfs dfs -mkdir -p /user/chris

查看文件夹

bin/hdfs dfs -ls -R /     回调查询

本地新建文件夹mkdir wcinput   mkdir wcoutput   vi wc.input创建wc.input文件,并写入内容

hdfs文件系统新建文件夹

bin/hdfs dfs -mkdir -p /user/chris/mapreduce/wordcount/input

本地文件上传hdfs文件系统

bin/hdfs dfs  -put wcinput/wc.input /user/chris/mapreduce/wordcount/input/

在hdfs文件系统上使用mapreduce

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /user/chris/mapreduce/wordcount/input /user/chris/mapreduce/wordcount/output

红色代表:读取路径

蓝色代表:输出路径

所以mapreduce的结果已经写到了hdfs的输出文件里面去了

Yarn on a Single Node

/opt/modules/hadoop-2.5.0/etc/hadoop/yarn-site.xml 在hadoop的安装路径下
<configuration><property><name>yarn.resourcemanager.hostname</name><value>hella-hadoop.chris.com</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>

yarn 的配置已经完成

在同一目录下slave文件上添加主机名或者主机ip,默认是localhost

yarn-env.sh 和 mapred-env.sh把JAVA_HOME 更改下,防止出错

export JAVA_HOME=/home/chris/software/jdk1.8.0_201

将mapred-site.xml.template 重命名为mapred-site.xml,同时添加以下配置

<configuration><property><name>mapreduce.framework.name</name><value>yarn</name></property>
</configuration>

先将/user/chris/mapreduce/wordcount/output/删除

再次执行$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /user/chris/mapreduce/wordcount/input /user/chris/mapreduce/wordcount/output

伪分布式执行完毕,mapreduce 执行在了yarn 上

 

3,完全分布式

   基于伪分布式,配置好一台机器后,分发至其它机器

    step1: 配置ip 和 hostname 映射

         vi /etc/hosts

         192.168.178.110 hella-hadoop.chris.com hella-hadoop

         192.168.178.111 hella-hadoop02.chris.com hella-hadoop02

         192.168.178.112 hella-hadoop03.chris.com hella-hadoop03

     同时在window以下路径也得设置

         C:\Windows\System32\drivers\etc\hosts

         192.168.178.110 hella-hadoop.chris.com hella-hadoop

         192.168.178.111 hella-hadoop02.chris.com hella-hadoop02

         192.168.178.112 hella-hadoop03.chris.com hella-hadoop03

      具体可参考linux ip hostname 映射

      https://www.cnblogs.com/pickKnow/p/10701914.html

step2:部署(假设三台机器)

不同机器配置不同的节点


部署:hella-hadoop        hella-hadoop02         hella-hadoop03
HDFS:NameNodeDataNode            DataNode               DataNodeSecondaryNameNode
YARN:ResourceManagerNodeManager            NodeManager            NodeManager                                   MapReduce:JobHistoryServer配置:* hdfshadoop-env.sh core.site.xmlhdfs-site.xmlslaves*yarnyarn-env.shyarn-site.xmlslaves*mapreducemapred-env.shmapred-site.xml

step3:修改配置文件

core.xml<configuration><property><name>fs.defaultFS</name><value>hdfs://hella-hadoop.chris.com:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/app/hadoop-2.5.0/data/tmp</value></property><property><name>fs.trash.interval</name><value>10080</value></property></configuration>

 

hdfs-site.xml
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>hella-hadoop03.chris.com:50090</value></property>    
</configuration>
slaveshella-hadoop.chris.com
hella-hadoop02.chris.com
hella-hadoop03.chris.com
yarn-site.xml<configuration><property><name>yarn.resourcemanager.hostname</name><value>hella-hadoop02.chris.com</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--NodeManager Resouce --><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log-aggregation-retain-seconds</name><value>640800</value></property></configuration>
mapred-site.xml<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>hella-hadoop.chris.com:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hella-hadoop.chris.com:19888</value></property>
</configuration

step4:集群的配置路径在各个机器上要一样,用户名一样

step5: 分发hadoop 安装包至各个机器节点

      scp -p 源节点 目标节点 

      使用scp 命令需要配置ssh 无密钥登陆,博文如下:

  https://www.cnblogs.com/pickKnow/p/10734642.html

step6:启动并且test mapreduce

   可能会有问题No route to Host 的Error,查看hostname 以及 ip 配置,或者是防火墙有没有关闭

防火墙关闭,打开,状态查询,请参考以下博文:

https://www.cnblogs.com/pickKnow/p/10670882.html

 

4,完全分布式+  HA 

HA全称:HDFS High Availability Using the Quorum Journal Manager 即 HDFS高可用性通过配置分布式日志管理

HDFS集群中存在单点故障(SPOF),对于只有一个NameNode 的集群,若是NameNode 出现故障,则整个集群无法使用,知道NameNode 重新启动。

HDFS HA 功能则通过配置Active/StandBy 两个NameNodes 实现在集群中对NameNode 的热备来解决上述问题,如果出现故障,如机器崩溃或机器需要升级维护,这时可以通过此种方式将NameNode很快的切换到另一台机器.

   在以上的分布式配置如下:假设有三台机器

   配置要点:

       * share edits

               JournalNode

       *NameNode

               Active,Standby

       *Client

              proxy

        *fence

              隔离,同一时刻只能仅有一个NameNode对外提供服务

 

    规划集群:

            hella-hadoop.chris.com           hella-hadoop02.chris.com         hella-hadoop03.chris.com

            NameNode                               NameNode

            JournalNode                             JournalNode                             JournalNode

            DateNode                                  DateNode                                 DateNode

因为NameNode有两个,一个备份,所以就不需要secondarynamenode了

配置:

core-site.xml

    <property><name>fs.defaultFS</name><value>hdfs://ns1</value></property>

hdfs-site.xml

<!-- 代表一个nameservice --><property><name>dfs.nameservices</name><value>ns1</value></property><!-- ns1 有两个namenode --><property><name>dfs.ha.namenodes.ns1</name><value>nn1,nn2</value></property><!-- 分别配置namenode的地址 --><property><name>dfs.namenode.rpc-address.ns1.nn1</name><value>hella-hadoop.chris.com:8020</value></property><property><name>dfs.namenode.rpc-address.ns1.nn2</name><value>hella-hadoop02.chris.com:8020</value></property><!-- 分别配置namenode web 端地址 --><property><name>dfs.namenode.http-address.ns1.nn1</name><value>hella-hadoop.chris.com:50070</value></property><property><name>dfs.namenode.http-address.ns1.nn2</name><value>hella-hadoop02.chris.com:50070</value></property><!-- NameNode Shared Edits Address 即 journal node 地址 -->     <property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hella-hadoop.chris.com:8485;hella-hadoop02.chris.com:8485;hella-hadoop03.chris.com:8485/ns1</value></property><!-- journal node 目录-->     <property><name>dfs.journalnode.edits.dir</name><value>/opt/app/hadoop-2.5.0/data/dfs/jn</value></property><!-- HDFS 代理客户端 -->     <property><name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- fence 隔离 只允许一个namenode 激活 -->    <!-- 如果使用fence ssh 隔离,要求机器namenode 的机器能够相互无密钥登陆-->    <property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/chris/.ssh/id_rsa</value></property>    

配置完毕,分发到其他的两台机器,开始启动

step1:在各个JournalNode 节点桑,输入以下命令启动journalnode 服务

     $sbin/hadoop-daemon.sh start journalnode

step2:在【nn1】上,对其进行格式化,并启动:

     $bin/hdfs namenode-format

     $sbin/hadoop-daemon.sh start namenode

step3:在【nn2】上,同步nn1的元数据信息:

     $bin/hdfs namenode-bootstrapStandby

step4:启动【nn2】

     $sbin/hadoop-daemon.sh start namenode

step5:将【nn1】切换为Active

     $bin/hdfs haadmin-transitionToActive nn1

step6:在【nn1】上,启动所有的datanode

     $sbin/hadoop-daemon.sh start datanode

4,完全分布式+  HA  + zookeeper

 只配置HA,只是手动的故障转移,要想做到自动的故障转移,需要通过zookeeper 对集群的服务进行一个监控

 zookeeper的作用:
     * 启动以后两个namenode 都是standby

            zookeeper 选举一个为Active

     *监控

            ZKFC:zookeeper failover controller

集群的守护进程更新如下:

            hella-hadoop.chris.com           hella-hadoop02.chris.com         hella-hadoop03.chris.com

            NameNode                               NameNode

            ZKFC                                       ZKFC

            JournalNode                             JournalNode                             JournalNode

            DateNode                                  DateNode                                 DateNode

ZKFC用来监控namenode

 

开始配置:

core-site.xml

<!--zookeeper集群配置-->  <property><name>ha.zookeeper.quorum</name><value>hella-hadoop.chris.com:2181,hella-hadoop02.chris.com:2181,hella-hadoop03.chris.com:2181</value></property>

hdfs-site.xml

<!-- failover 故障自动转移,依靠zookeeper 集群,zookeeper 配置在core -->    <property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>

配置完毕,开始启动并且验证:

     step1:关闭所有的HDFS 服务 sbin/stop-dfs.sh

     step2: 启动Zookeeper集群 bin/zkServer.sh start

     step3: 初始化HA 在Zookeeper中的状态 bin/hdfs zkfc -formatZK

     step4:启动HDFS服务sbin/start-dfs.sh

     stepc5:在各个NameNode 节点上启动DFSZK Failover Controller,先在那台机器启动,那台机器的NameNode就是Active NameNode 

                 sbin/hadoop-daemon.sh start zkfc

     验证:

      jps 查看进程,可以将Active的进程kill, kill -9 pid

      可以通过50070端口号在网页上直接查看,也可以通过命令查看namenode 是否实现故障自动转移,本来是standby 的namenode 转化为active

 

转载于:https://www.cnblogs.com/pickKnow/p/10701433.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache phoenix 入门_实现Phoenix入门

快速入门Phoenix是一个开源的HBASE SQL层。Phoeinx可以用标准的JDBC API替代HBASE client API来创建表&#xff0c;插入和查询查询HBASE中的数据。Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势1. 二级索引支持(global index loc…

腾讯与微软合作,准备应用Silverlight技术

腾讯和微软计划在Silverlight技术上展开深入合作&#xff0c;腾讯后续会在多项业务中应用Silverlight技术&#xff0c;这个视频展示了腾讯使用Silverlight可能应用的场景。查看详情:http://labs.qq.com/e/51/ 转载于:https://www.cnblogs.com/nasa/archive/2008/04/22/1165464.…

如何增强台式计算机无线网络,台式机无线网信号差怎么解决

台式机无线网信号非常的差&#xff0c;玩什么都卡&#xff0c;那么我要怎么样解决呢?下面由小编给你做出详细的台式机无线网信号差解决方法介绍!希望对你有帮助!台式机无线网信号差解决方法一&#xff1a;在确保无线网卡的驱动程序都正确安装的前提下&#xff0c;给出如下建议…

三阶矩阵的lu分解详细步骤_快速入门矩阵运算——开源库Eigen

矩阵是数学中一个重要的工具&#xff0c;广泛应用于各种场景下的数值分析&#xff0c;例如&#xff0c;数字信号处理&#xff0c;图像处理等。我们如何在程序中使用矩阵进行运算呢&#xff1f;本文将为大家介绍一个开源的矩阵运算工具——Eigen。Eigen is a C template library…

【转】接口 与 抽象类

本文转自&#xff1a;http://blog.***/article.asp?id89介绍&#xff1a;在本文中&#xff0c;我将借一个DEMO讨论下接口和抽象类。抽象类和接口的的概念对初学面向对象编程的人来说&#xff0c;总容易迷惑。所以&#xff0c;我试着讨论下两者的理论并比较他们的使用。最后我将…

第十三届东北师范大学程序设计竞赛热身赛 C(exgcd+欧拉函数)

题目链接 思路 对于答案&#xff0c;我们考虑对于每个可行的$c$会和多少$d$产生合法序偶。首先证明$c$和$b$必然互质。 假设$c$和$b$不互质&#xff0c;那么设$t_{1}gcd(c, b),(t_{1} > 1)$对于 $(c*d)\%ba$ 等价于 $(k_{1}*t_{1})\%ba,(k_1\in Z)$ $(k_{1}*t_{1})\%(k_{2}*…

[jQuery] Zepto的点透问题如何解决?

[jQuery] Zepto的点透问题如何解决&#xff1f; 1、“点透”是什么你可能碰到过在列表页面上创建一个弹出层&#xff0c;弹出层有个关闭的按钮&#xff0c;你点了这个按钮关闭弹出层后后&#xff0c;这个按钮正下方的内容也会执行点击事件&#xff08;或打开链接&#xff09;。…

确认要从桌面删除计算机,确定要从界面上删除 我的电脑 ...

桌面所有图标消失应该是系统外壳程序explorer.exe没有正常启动或被关闭造成的,可以在任务管理器(CTRLALTDEL)中手动运行explorer.exe找回桌面.造成该问题的主要原因有:1.恶意程序/病毒破坏你可以重启系统并按F8进入安全模式,选择专业的杀毒软件对系统分区进行全面扫描,如果是恶…

birt报表表格边框_Python 快速设置 Excel 表格边框

1. 安装 xlwings直接安装用 pip install xlwings2. 导入 xlwingsimport xlwings as xw3. 打开 Excel 文件# 打开存好的 Excelapp xw.App() # 设置应用wb xw.Book(data/小蜜蜂超市销售报表.xlsx) # 打开文件ws wb.sheets[Sheet1] # 选择表格4. 获取表格行列last_column ws.…

[jQuery] jQuery UI怎样自定义组件?

[jQuery] jQuery UI怎样自定义组件&#xff1f; 又是第一次&#xff0c;现在的感受是jQueryUI Widget能让你代码组织得更好,风格更一致。 如何开始使用首先用$.widget()方法开始定义你的组件&#xff0c;它只接收三个参数&#xff1a;第一个是组件名称&#xff0c;第二个是可选…

在VS中进行对项目进行编译出现不能编译的问题

在用VS工具开发的ASP.NET应用程序时&#xff0c;有时会出现C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files这个文件夹的CSC.exe编译应用程序已存在还是什么&#xff0c;该应用程序就是编译不过去一直报这个错误。 解决办法&#xff1a; 1、先把“任务…

计算机辅助制造期末试题答案,精编国家开放大学电大本科《机械CAD-CAM》2025期末试题及答案(试卷号:1119)...

版权声明&#xff1a;以上文章中所选用的图片及文字来源于网络以及用户投稿&#xff0c;由于未联系到知识产权人或未发现有关知识产权的登记&#xff0c;如有知识产权人并不愿意我们使用&#xff0c;如果有侵权请立即联系&#xff1a;55525090qq.com&#xff0c;我们立即下架或…

矢量合成和分解的法则_力的合成与分解

1力的合成一、合力与分力当一个物体受到几个力的共同作用时&#xff0c;我们常常可以求出这样一个力&#xff0c;这个力产生的效果跟原来几个力的共同效果相同&#xff0c;这个力就叫做那几个力的合力&#xff0c;原来的几个力叫做分力&#xff0e;二、合力与分力的关系1.合力与…

[导入]相片: 53787515.jpg

文章来源:http://img.blog.163.com/photo/5VZ9bIclg8NWuT90ExHHmQ/1697575584542151534.jpg转载于:https://www.cnblogs.com/baiyirui/archive/2008/04/27/1173122.html

超导量子计算机速度多快,我国量子计算机实现量子霸权,计算速度比谷歌快了100亿倍...

12月4日&#xff0c;中国科学技术大学宣布&#xff0c;我国新构建的76个光子的量子计算机实现了量子霸权。在5000万个样本的高斯玻色取样实验中&#xff0c;“九章”量子计算机仅用了200秒就完成了&#xff0c;如果使用世界第三的超级计算机进行实验&#xff0c;它也要将近20亿…

初一辍学学php能行吗_《夺冠》破7亿,辍学的农村姑娘成排球女王,朱婷:百炼才能成钢...

分享职场故事&#xff0c;交流职场经验&#xff0c;欢迎关注“闫湘”。《夺冠》累计票房7亿&#xff0c;让大家再一次领略了女排精神&#xff0c;而“2019-2020年中国运动员传播影响力榜第1名&#xff0c;朱婷&#xff01;”朱婷这个名字又一次响彻全中国。与今天的风光不同&am…

关于eclipse项目的x号报错的一些问题

有些时候项目中并未有什么问题 但项目前会有一个X号报错且无法运行项目 我们不妨从jre和Tomcat的一些配置中找原因 1&#xff0c;首先查看jre的安装是否正确&#xff0c;可以看见并未出错 &#xff0c;如果有问题&#xff0c;重新导入一下即可 2&#xff0c;打开项目的Java bui…

提高计算机水平的小技巧,五大电脑小技巧

而随着生活水平的提高&#xff0c;家家现在都有一台电脑&#xff0c;使用电脑的技巧也是五花八门。以下是YJBYS小编搜索整理的关于五大实用的电脑小技巧&#xff0c;供参考阅读&#xff0c;希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生培训网!方法一&#x…

iWindowsMobile Launches Updated ZoomBoard

今天发现一个好东西&#xff0c;发上来和大家分享&#xff01;它来自iwindowsmobile.com(模拟iphone嫌疑)&#xff0c;因为在这里我发现了很多Windows Mobile用户梦寐以求的软件&#xff0c;我想应该叫这个站点为iheartwindowsmobile.com更为贴切&#xff0c;不管它叫什么&…

idea和搜狗输入法快捷键冲突_ubuntu18.04安装搜狗输入法

1. 必要时可获取root权限ubuntu在我们安装时并不是root权限,而是我们自己建立的用户,虽然可以使用sudo 命令,但是有时候还是不方便,毕竟root就是一切.输入 su即可切换root卸载ibusubuntu默认使用ibus管理输入法,官方推荐使用fcitx.我们先卸载ibussudo apt-getremove ibus清除ib…