Hadoop源码分析二安装配置过程详解

目录
  • 1、 创建用户
  • 2、 安装jdk
  • 3、 修改hosts
  • 4、 配置ssh免密登录
  • 5、 安装zookeeper
    • 解压:
    • 修改配置文件
      • 修改内容如下:
      • 配置环境变量
    • 启动
  • 6、 安装hadoop
    • 对于三台节点的配置安排如下:
      • 解压:
      • 修改配置文件:
      • 修改core-site.xml
      • 配置hdfs-site.xml
      • 配置mapred-site.xml
      • 配置yarn-site.xml
      • 配置slaves
  • 7、 初始化
    • 在初始化前需要将所有机器都配置好hadoop
      • (1) 启动zookeeper
      • (2) 启动journalnode
      • (3) 格式化zk
      • (4) 格式化hdfs
      • (5) 同步元数据
      • (6) 启动hadoop
      • (7) 安装fuster
      • (8) 网页访问

安装hadoop有好几种方式,以下按照hdfs高可用的方式来安装。

1、 创建用户

命令:

useradd -m bigdata
passwd bigdata

2、 安装jdk

解压:

tar -zvf jdk-8u191-linux-x64.tar.gz

修改环境变量

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
JRE_HOME=/usr/lib/jvm/java-8-openjdk-arm64/jre
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH

3、 修改hosts

修改/etc/hosts

10.211.55.12    hadoop01  # NameNode Active
10.211.55.13    hadoop01  # NameNode Standby
10.211.55.14    hadoop01  # DataNode1

4、 配置ssh免密登录

在每一台需要配置的机器上执行以下命令:

ssh-keygen –t rsa

执行完成后默认会在其根目录下创建一个.ssh目录,在这个目录中有id_rsa和id_rsa.pub两个文件。然后将所有机器的id_rsa.pub文件的内容都合并到一个新的文件中,文件命名为authorized_keys,然后将该文件分发到各台机器上。

最后,使用ssh登录其他机器测试是否完成免密。

5、 安装zookeeper

下载链接:https://zookeeper.apache.org/releases.html

解压:

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz

修改配置文件

将zookeeper下conf目录中的zoo_sample.cfg文件复制一份,新复制的文件重命名为zoo.cfg文件。

修改内容如下:

#zookeeper的文件路径
dataDir=/root/zookeeper/data

#zookeeper集群节点信息
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

#server.A=B:C:D 其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。

然后在上述设置的文件目录中新建一个文件,文件名为myid,文件内容为一个数字。例如上述配置的hadoop01对应的是server.1,它的myid的文件内容就是1。

配置环境变量

修改/etc/profile文件

export ZOOKEEPER_HOME=/root/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

启动

启动命令如下

#启动
zkServer.sh start
#查询状态
zkServer.sh status

6、 安装hadoop

对于三台节点的配置安排如下:

hadoo01:journalnode、namenode、datanode、resourcemanager、nodemanager
hadoo02:journalnode、namenode、datanode、resourcemanager、nodemanager
hadoo03:journalnode、datanode、nodemanager

下载链接:https://hadoop.apache.org/releases.html

解压:

tar -zxvf hadoop-2.7.6.tar.gz

修改配置文件:

hadoop的配置文件在解压后文件夹的etc目录下的hadoop目录中。

修改core-site.xml

<configuration>
<!-- 配置hdfs的名称,其中value标签中的nns1为自定义的,与后文hdfs-site.xml中的属性对应即可-->
 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nns1</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <!-- 其他临时文件的存储的目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/HadoopData/HDFSData</value>
    </property>
<!-- 下面两项与权限相关,在配置hiveserver2的时候如果没配置这两项会出问题。name标签中的root需要改为你使用的用户名-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
<!-- -->
<!-- 配置zookeeper-->
<property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    </property>
</configuration>

配置hdfs-site.xml

<configuration>
<!-- 配置hdfs服务,需要与上文中的fs.defaultFS对应-->
 <property>
        <name>dfs.nameservices</name>
        <value>nns1</value>
    </property>
<!-- 配置hdfs的namenode,使用“,”分隔,value标签中的内容需要自定义-->
    <property>
        <name>dfs.ha.namenodes.nns1</name>
        <value>nn1,nn2</value>
    </property>
<!-- 配置两台namenode,name标签最后的内容需要与上文对应-->
    <property>
        <name>dfs.namenode.rpc-address.nns1.nn1</name>
        <value>hadoop01:9000</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.nns1.nn2</name>
        <value>hadoop02:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.nns1.nn1</name>
        <value>hadoop01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.nns1.nn2</name>
        <value>hadoop02:50070</value>
    </property>
    <!--配置journalnode,修改value中的ip地址与端口便可,最后的nns1可以改为上述定义的名称 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/nns1</value>
    </property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
    <property>
        <name>dfs.client.failover.proxy.provider.nns1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 一旦需要NameNode切换,使用ssh方式进行操作,配置了这个需要服务器能使用fuster,有的服务器可能需要安装 -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
        <!-- 指定journalnode的存储路径 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/HadoopData/HDFSData/journal</value>
    </property>
    <!-- 是否启动自动故障转移 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!-- 指定namenode数据存储路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/data/HadoopData/HDFSData/name</value>
    </property>
    <!-- 指定datanode数据存储路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/data/HadoopData/HDFSData/data</value>
    </property>
<!-- 设置文件副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<!-- 是否启动hdfs网页界面 -->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

配置mapred-site.xml

<configuration>
<!-- 采用yarn作为mapreduce的资源调度框架 -->
 <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置yarn-site.xml

<configuration>
 <!-- 启用HA高可用性 -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
   <!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
 <!-- 配置集群名称 -->
     <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster1-yarn</value>
    </property>
<!--配置RM节点  -->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hadoop01</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hadoop02</value>
    </property>
    <!--在hadoop01上配置rm1,在hadoop02上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改 -->
    <property>
        <name>yarn.resourcemanager.ha.id</name>
        <value>rm1</value>
    </property>
    <!--开启自动恢复功能 -->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <!--配置与zookeeper的连接地址 -->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    </property>
   <!-- 配置shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

配置slaves

hadoop01
hadoop02
hadoop03

slaves中配置的服务器ip,没改hosts文件则直接写ip地址便可。该文件配置的服务器在启动的时候会启动datanode和nodemanager两个进程。

7、 初始化

在初始化前需要将所有机器都配置好hadoop

(一般直接复制上述配置好的文件,注意yarn-site.xml中的id,还有保证配置中的路径在每台机器上都存在)。

(1) 启动zookeeper

初始化之前需要保证zookeeper能正常提供服务,启动命令之前有提到

(2) 启动journalnode

初始化前需要保证journalnode已经启动。启动脚本在hadoop的sbin目录下,名字为hadoop-daemon.sh。

启动命令如下:

./hadoop-daemon.sh start journalnode

(3) 格式化zk

命令如下

hdfs zkfc -formatZK

(4) 格式化hdfs

命令如下

hadoop namenode -format

这一步会在上述hdfs-site.xml,配置的dfs.namenode.name.dir路径下创建一系列文件。

(5) 同步元数据

在另一台配置了namenode的服务器上执行以下命令:

hdfs namenode -bootstrapStanby

上述命令如果执行失败,还有一个简单的方法可以同步元数据。可以直接将步骤4中在第一台生成的文件复制到第二台服务器。

(6) 启动hadoop

同样在sbin目录下,使用start-all.sh可以启动所有服务,使用start-dfs.sh和start-yarn.sh可以分别启动hdfs和yarn。

使用hadoop-deamon.sh和yarn-deamon.sh分别别启动hdfs和yarn的单个进程。

(7) 安装fuster

安装命令如下:

yum install psmisc

(8) 网页访问

hdfs网页访问50070端口,yarn网页访问8088。这两个端口可以在配置文件中修改。
正常启动则可以访问到以下页面。

以上就是Hadoop源码分析二安装配置过程的详细内容,本系列下一篇文章传送门Hadoop源码分析三启动及脚本剖析更多Hadoop源码分析的资料请持续关注我们!

(0)

相关推荐

  • Hadoop源码分析五hdfs架构原理剖析

    目录 1. hdfs架构 如果在hadoop配置时写的配置文件不同,启动的服务也有所区别 namenode的下方是三台datanode. namenode左右两边的是两个zkfc. namenode的上方是三台journalnode集群. 2. namenode介绍 namenode作为hdfs的核心,它主要的作用是管理文件的元数据 文件与块的对应关系中的块 namenode负责管理hdfs的元数据 namenode的数据持久化,采用了一种日志加快照的方式 最后还会有一个程序读取这个快照文件和日

  • Hadoop 分布式存储系统 HDFS的实例详解

    HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统. 一.HDFS的优缺点 1.HDFS优点: a.高容错性 .数据保存多个副本 .数据丢的失后自动恢复 b.适合批处理 .移动计算而非移动数据 .数据位置暴露给计算框架 c.适合大数据处理 .GB.TB.甚至PB级的数据处理 .百万规模以上的文件数据 .10000+的节点 d.可构建在廉价的机器上 .通过多副本存储,提高可靠性 .提供了容错和恢复机制 2.HDFS缺点 a.低延迟数

  • Hadoop源码分析三启动及脚本剖析

    1. 启动 hadoop的启动是通过其sbin目录下的脚本来启动的.与启动相关的叫脚本有以下几个: start-all.sh.start-dfs.sh.start-yarn.sh.hadoop-daemon.sh.yarn-daemon.sh. hadoop-daemon.sh是用来启动与hdfs相关的服务的 yarn-daemon.sh是用来启动和yarn相关的服务 start-dfs.sh是用来启动hdfs集群的 start-yarn.sh是用来启动yarn集群 start-all.sh是用

  • Python API 操作Hadoop hdfs详解

    http://pyhdfs.readthedocs.io/en/latest/ 1:安装 由于是windows环境(linux其实也一样),只要有pip或者setup_install安装起来都是很方便的 >pip install hdfs 2:Client--创建集群连接 > from hdfs import * > client = Client("http://s100:50070") 其他参数说明: classhdfs.client.Client(url, ro

  • Hadoop源码分析二安装配置过程详解

    目录 1. 创建用户 2. 安装jdk 3. 修改hosts 4. 配置ssh免密登录 5. 安装zookeeper 解压: 修改配置文件 修改内容如下: 配置环境变量 启动 6. 安装hadoop 对于三台节点的配置安排如下: 解压: 修改配置文件: 修改core-site.xml 配置hdfs-site.xml 配置mapred-site.xml 配置yarn-site.xml 配置slaves 7. 初始化 在初始化前需要将所有机器都配置好hadoop (1) 启动zookeeper (2

  • scrapy-redis源码分析之发送POST请求详解

    1 引言 这段时间在研究美团爬虫,用的是scrapy-redis分布式爬虫框架,奈何scrapy-redis与scrapy框架不同,默认只发送GET请求,换句话说,不能直接发送POST请求,而美团的数据请求方式是POST,网上找了一圈,发现关于scrapy-redis发送POST的资料寥寥无几,只能自己刚源码了. 2 美团POST需求说明 先来说一说需求,也就是说美团POST请求形式.我们以获取某个地理坐标下,所有店铺类别列表请求为例.获取所有店铺类别列表时,我们需要构造一个包含位置坐标经纬度等

  • Django扫码抽奖平台的配置过程详解

    安装源 pip install django2.2 pip install mysqlclient1.4.6 使用pyharm 创建django 项目 django基本配置 在settings.py中设置数据库链接 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'km', 'USER': 'root', 'PASSWORD': 'n4', 'HOST': 'na.cc', 'PORT': '330

  • Vue源码分析之Vue实例初始化详解

    这一节主要记录一下:Vue 的初始化过程 以下正式开始: Vue官网的生命周期图示表 重点说一下 new Vue()后的初始化阶段,也就是created之前发生了什么. initLifecycle 阶段 export function initLifecycle (vm: Component) { const options = vm.$options // locate first non-abstract parent let parent = options.parent if (pare

  • Hadoop源码分析一架构关系简介

    1. 简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 Hadoop起源于谷歌发布的三篇论文:GFS.MapReduce.BigTable.其中GFS是谷歌的分布式文件存储系统,MapReduce是基于这个分布式文件存储系统的一个计算框架,BigTable是一个分布式的数据库.hadoop实现了论文GFS和MapReduce中的内容,Hbase的实现了参考了论文BigTable. 2. hadoop架构 hadoop主要有三个组件 HDFS.YARN和MapReduce.其

  • Hadoop源码分析六启动文件namenode原理详解

    1. namenode启动 在本系列文章三中分析了hadoop的启动文件,其中提到了namenode启动的时候调用的类为 org.apache.hadoop.hdfs.server.namenode.NameNode 其main方法的内容如下: public static void main(String argv[]) throws Exception { if (DFSUtil.parseHelpArgument(argv, NameNode.USAGE, System.out, true)

  • Hadoop源码分析四远程debug调试

    1. hadoop远程debug 从文档(3)中可以知道hadoop启动服务的时候最终都是通过java命令来启动的,其本质是一个java程序.在研究源码的时候debug是一种很重要的工具,但是hadoop是编译好了的代码,直接在liunx中运行的,无法象普通的程序一样可以直接在eclipse之类的工具中直接debug运行. 对于上述情况java提供了一种远程debug的方式. 这种方式需要在java程序启动的时候添加以下参数: -agentlib:jdwp=transport=dt_socket

  • Vue 源码分析之 Observer实现过程

    导语: 本文是对 Vue 官方文档深入响应式原理(https://cn.vuejs.org/v2/guide/reactivity.html)的理解,并通过源码还原实现过程. 响应式原理可分为两步,依赖收集的过程与触发-重新渲染的过程.依赖收集的过程,有三个很重要的类,分别是 Watcher.Dep.Observer.本文主要解读 Observer . 这篇文章讲解上篇文章没有覆盖到的 Observer 部分的内容,还是先看官网这张图: Observer 最主要的作用就是实现了上图中touch

随机推荐