设为首页 加入收藏

TOP

Hadoop新手入门以及如何搭建一个全分布式集群
2019-03-25 12:29:39 】 浏览:73
Tags:Hadoop 新手入门 以及 如何 搭建 一个 分布式 集群

Hadoop

  1. HADOOP是apache旗下的一套开源软件平台
  2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
  3. HADOOP的核心组件有
    A. HDFS(分布式文件系统)
    B. YARN(运算资源调度系统)
    C. MAPREDUCE(分布式运算编程框架)
  4. 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

Hadoop核心模块

Hadoop common:支持 Hadoop 模块的常用工具

Hadoop HDFS:分布式文件系统,可以提供应用程序的高吞吐量的访问

YARN:分布式资源调度系统

MAPREDUCE:一种用于并行处理大型的数据集的计算框架,基于YARN资源调度系统

重点组件

HDFS:分布式文件系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
HBASE:基于HADOOP的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
Oozie:工作流调度框架azkaban
Sqoop:数据导入导出工具
Flume:日志数据采集框架
Spark
Storm

Hadoop三种不同安装方式

  1. Local(Standalone)Mode (单机)

    所有的进程都跑在同一个JVM虚拟机内,通常用在测试

    单机版的hadoop的hdfs的根目录就是linux系统的根目录

  2. Pseudo-Distributed Mode (伪分布式)

  3. Fully-Distributed Mode (全分布式)


ssh免密登录

ssh-keygen -t rsa                           
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa   
 <!--  -t 加密算法-P 私钥密码可以不写 -f 指定路径 -->

ssh-copy-id root@hadoop02 
<!-- 要把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中 -->

Hadoop集群

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起
HDFS集群:
负责海量数据的存储,集群中的角色主要有 NameNode / DataNode
YARN集群:
负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

全分布式集群搭建步骤:

1. 集群的规划,确定每台机器的 IP地址,和要分配的节点

2. 先决条件:

  • java运行环境

  • ssh 免密:master --> slave-01 \ slave-02 \ slave-03

  • 关闭防火墙

    • service iptables stop 关闭防火墙
    • chkconfig iptables off 取消开机自启
  • 修改静态 IP:vi /etc/sysconfig/network-scripts/ifcfg-eth0

  • 修改节点主机名:

    • vi /etc/sysconfig/network 永久修改
    • hostname XXX 临时修改
  • 设置机器ip地址和主机名之间的映射关系:vi /etc/hosts

  • 节点之间时间的同步:

    • 自己在namenode节点上配置一个时间服务器
      配置ntpserver:

      yum -y install ntp.x86_64
      vi /etc/ntp.conf
      restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
      
      # Use public servers from the pool.ntp.org project.
      # Please consider joining the pool (http://www.pool.ntp.org/join.html).
      #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
      
    • 其他节点需要安装ntpdate
      yum -y install ntpdate.x86_64 通过 ntpdate master 来校对时间

  • root(企业级使用不能使用root用户,需要创建hadoop用户,配置sudoer)

3. 安装Hadoop

  • 上传并解压安装包,并配置环境变量 /etc/profile

  • 配置hadoop运行环境 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

  • 配置hadoop核心配置文件core-site.xml vi $HADOOP_HOME/etc/hadoop/core-site.xml

    <configuration>
        <!--指定HADOOP所使用的文件系统schema(URI),HDFS的老大NAMENODE的地址-->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    	
    	<!--指定IO BUFFER的大小-->
    	<property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
        </property>
    	
    	<!--指定hadoop运行时产生的临时文件的存储路径-->
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>/usr/local/hadoop-2.7.1/tmp</value>
    	</property>
    </configuration>
    
  • 配置hdfs的配置文件hdfs-site.xml vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

     <configuration>
    	<!--指定namenode的元数据的存储路径-->
    	<property>
    		<name>dfs.namenode.name.dir</name>
    		<value>/usr/local/hdpdata/name</value>
    	</property>
    
    	<!---namenode配置多个目录和datanode配置多个目录,有什么区别?---->
    	<property>
    		<name>dfs.datanode.data.dir</name>
    		<value>/usr/local/hdpdata/data</value>
    	</property>
    
    	<!--设置副本数量-->
    	<property>
    		<name>dfs.replication</name>
    		<value>3</value>
    	</property>
    
    	<!--设置文件块的大小-->
    	<property>
    		<name>dfs.blocksize</name>
    		<value>128m</value>
    	</property>
    
    	<!--设置secondary namenode 的web ui访问路径-->
    	<property>
    		<name>dfs.secondary.http.address</name>
    		<value>gp191801:50090</value>
    	</property>
    	
    	<!--配置checkpoint的镜像文件存放目录-->
    	<property>
    		<name>fs.checkpoint.dir</name>
    		<value>file:///usr/local/hdpdata/dfs/cname</value>
    	</property>
    
    	<!--配置checkpoint的日志文件存放目录-->
    	<property>
    		<name>fs.checkpoint.edits.dir</name>
    		<value>file:///usr/local/hdpdata/dfs/cname</value>
    	</property>
    	
    	<!--配置namenode的web ui的监控端口-->
    	<property>
    		<name>dfs.http.address</name>
    		<value>gp191801:50070</value>
    	</property>
    	
    	<!--配置web api端口是否开启,就可以在web端或者而其他不安装hadoop的机器上访问-->
    	<property>
    		<name>dfs.webhdfs.enabled</name>
    		<value>true</value>
    	</property>
    	
    	<!--是否开启权限验证-->
    	<property>
    		<name>dfs.permissions</name>
    		<value>false</value>
    	</property>
    </configuration>
    
  • 配置其他节点的信息(小弟文件)slaves vi $HADOOP_HOME/etc/hadoop/slaves

    //一个节点一行
    master
    slave-01
    slave-02
    

此时HDFS集群相关配置文件完成

4. 将 hadoop 安装包 copy 到其他节点机器 scp -r hadoop-2.7.1 root@slave-02:$PWD

5. 启动 hdfs

  • 格式化 namenode hadoop namenode -format
  • 批量启动 start-dfs.sh
  • 单节点启动 hadoop-daemon.sh start namenode / datanode /secondarynamenode

6. YARN 集群配置

  • YARN配置文件 yarn-site.xml vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

    <!--配置rm的主机名-->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
    	<value>master</value>
    </property>
    
    <!--配置shuffle过程-->
    <property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
    
    <!--配置rm的对外通讯端口-->
    <property>
    	<name>yarn.resourcemanager.address</name>
    	<value>master:8032</value>
    </property>
    
    <!--指定rm的调度端口-->
    <property>
    	<name>yarn.resourcemanager.scheduler.address</name>
    	<value>master:8030</value>
    </property>
    
    <!--指定NM从RM获取资源的通讯端口-->
    <property>
    	<name>yarn.resourcemanager.resource-tracker.address</name>
    	<value>master:8031</value>
    </property>
    
    <!--指定RM的超级管理员的通讯端口-->
    <property>
    	<name>yarn.resourcemanager.admin.address</name>
    	<value>master:8033</value>
    </property>
    
    <!--指定RM的web ui的监控端口-->
    <property>
    	<name>yarn.resourcemanager.webapp.address</name>
    	<value>master:8088</value>
    </property>
    
  • 把配置文件 scp 到其他节点机器

  • 启动 yarn 集群 start-yarn.sh

7. 配置 mapred 的参数 mapred-site.xml vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

<!--配置mr程序在yarn集群上运行-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>

<!--指定jobhistory的通讯地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>

<!--查看job的历史执行记录的web ui监控端口-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

8. hdfs dfsadmin -report 查看集群状态报告
hdfs dfsadmin -help 查看 dfsadmin 命令帮助

安全模式

<property>
  <name>dfs.namenode.safemode.threshold-pct</name>
  <value>0.999f</value>
  <description>
    Specifies the percentage of blocks that should satisfy 
    the minimal replication requirement defined by dfs.namenode.replication.min.
    Values less than or equal to 0 mean not to wait for any particular
    percentage of blocks before exiting safemode.
    Values greater than 1 will make safe mode permanent.
  </description>
</property>

解决方案:
1、暴力法。重新格式化namenode hdfs namenode -format(需要先删除namenode.dir的配置路径)
2、使用命令强制退出安全模式
第一步:强制离开安全模式
hdfs dfsadmin -safemode leave
第二步:修复文件(一般由运维人员搞定)
hdfs fsck /
hdfs fsck / -delete(删除损坏块的block)
linux的命令来修复文件

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop提交作业------>hadoop.. 下一篇结合案例讲解MapReduce重要知识点..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目