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

[经验分享] hadoop-bantiaomichong

[复制链接]

尚未签到

发表于 2018-10-29 12:36:57 | 显示全部楼层 |阅读模式
  Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
  Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
  Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
  hadoop主要有以下几个优点:
  高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
  高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。 Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。
  hadoop的数据流程图:
DSC0000.png

  Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。
Namenode #
  它管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。
DSC0001.png

Secondary NameNode
  它是一个用来监控HDFS状态的辅助后台程序。就想NameNode一样,每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。Secondary NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的 快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。
Datanode
  它是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。 集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通 信,并且对相关的数据块进行读/写操作。
JobTracker
  JobTracker后台程序用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为 不同的task分配节点。同时,它还监控所有的task,一旦某个task失败了,JobTracker就会自动重新开启这个task,在大多数情况下这 个task会被放在不用的节点上。每个Hadoop集群只有一个JobTracker,一般运行在集群的Master节点上。
TaskTracker
  它与负责存储数据的DataNode相结合,其处理结构上也遵循主/从架构。JobTracker位于主节点,统领 MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而 JobTracker负责分配task。虽然每个从节点仅有一个唯一的一个TaskTracker,但是每个TaskTracker可以产生多个java 虚拟机(JVM),用于并行处理多个map以及reduce任务。TaskTracker的一个重要职责就是与JobTracker交互。如果 JobTracker无法准时地获取TaskTracker提交的信息,JobTracker就判定TaskTracker已经崩溃,并将任务分配给其他 节点处理。
  下面是hadoop的一些配置:
  master端: 172.25.254.1
  slave端: 172.25.254.2
  slave端: 172.25.254.3
  slave端: 172.25.254.4
  在master端添加hadoop用户
useradd -u 900 hadoop  
echo westos |passwd --stdin hadoop
  安装jdk:
sh jdk-6u32-linux-x64.bin  
mv jdk1.6.0_32/ /home/hadoop/java
  
su - hadoop #接下来都是用hadoop用进行操作
  
vim .bash_profile
  
    export JAVA_HOME=/home/hadoop/java
  
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  
    export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
  
source .bash_profile
  配置hadoop单节点部署:
tar zxf hadoop-1.1.2.tar.gz  
ln -s hadoop-1.1.2 hadoop
  
cd hadoop
  
vim conf/hadoop-env.sh
  
     export JAVA_HOME=/home/hadoop/java
  创建输入文件:
mkdir input  
cp conf/*.xml input/
  hadoop伪分布式部署
  运行官方给的示例程序:
bin/hadoop jar hadoop-examples-1.1.2.jar grep input output 'dfs[a-z.]+'  查看输出文件:
[hadoop@server1 hadoop]$ cat output/part-00000  
1   dfsadmin
  保证master到节点实现无密码登陆:
ssh-keygen  
ssh-copy-id localhost #分布式部署的情况下要在slave端做,跟的是master的ip而不是localhost
  配置HDFS master(即namenode)的地址和端口号:
vim conf/core-site.xml  

  
   
  
            fs.default.name
  
                    hdfs://172.25.254.1:9000 #指定 namenode
  
                           
  

  配置的是JobTracker的地址和端口:
vim conf/mapred-site.xml  

  
   
  
            mapred.job.tracker
  
                    172.25.254.1:9001 #指定 jobtracker
  
                           
  

  修改Hadoop中HDFS的配置,配置的备份方式
vim conf/hdfs-site.xml  

  

  
            dfs.replication
  
                    1    #指定文件保存的副本数
  
                           
  

  格式化一个新的分布式文件系统:
bin/hadoop namenode -format
DSC0002.png

  启动hadoop进程:
bin/start-dfs.sh  
bin/start-mapred.sh
DSC0003.png

DSC0004.png

  通过jps命令可以查看到hadoop的进程:
DSC0005.png

  我们还可以通过网络借口浏览 NameNode 和 JobTracker ,它们的地址默认为:
  NameNode – http://172.25.254.1:50070/
DSC0006.png

  JobTracker – http://172.25.254.1:50030/
DSC0007.png

  将输入文件考入分布式文件系统:
bin/hadoop fs -put input test  运行官方给的示例程序:
bin/hadoop jar hadoop-examples-1.1.2.jar wordcount test output
DSC0008.png

  查看输出文件:
bin/hadoop fs -cat output/*  分布式部署:
  master端的配置于伪分布式的部署基本相同只是添加了master和slave的信息
vim conf/masters  
    172.25.254.1
  
vim conf/slaves
  
    172.25.254.2
  
    172.25.254.3
  如果是接着为分布式做的要先停止haoop的进程
bin/stop-all.sh  然后添加上面的master和slave信息重新格式化分布式系统
bin/hadoop namenode -format
DSC0009.png

  在slave端要安装jdk,有与master端相同的hadoop用户,uid等保持一致,hadoop的数据配置路径也要与master端相同
  之后在master端开启hadoop进程
bin/start-dfs.sh  
bin/start-mapred.sh
DSC00010.png

  此次我们通过jps命令可以看到在master端开启了NameNode,SecondaryNameNode和JobTracker三个进程,而DataNode和TaskTracker则是在slave端开启了。
DSC00011.png

DSC00012.png

  hadoop在线添加节点:
  新添加节点与其他的slave端一样要安装jdk,有与master端相同的hadoop用户,uid等保持一致,hadoop的数据配置路径也要与master端相同 然后启动以下两个服务
bin/hadoop-daemon.sh start datanode  
bin/hadoop-daemon.sh start tasktracker
  然后在master端加入新节点的ip
vim conf/slaves  
  172.25.254.2
  
  172.25.254.3
  
  172.25.254.4
  hadoop在线删除节点
  在master上:
vim conf/mapred-site.xml  
   
  
      dfs.hosts.exclude
  
      /home/hadoop/hadoop/conf/datanode-excludes
  
      
  
vim /home/hadoop/hadoop/conf/datanode-excludes #添加要删除的节点ip
  
   172.25.254.3
  在master上刷新节点:
bin/hadoop dfsadmin -refreshNodes  你可以通过以下命令查看 datanode 状态
bin/hadoop dfsadmin -report  此时可以看到新加的server4节点以及将要移除的server3节点正在做数据转移
DSC00013.png

  当server3节点状态为Decommissioned时就可以移除了



运维网声明 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.yunweiku.com/thread-628009-1-1.html 上篇帖子: hadoop源码解析---INodeReference机制 下篇帖子: hadoop零散笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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