我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

安装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源码分析的资料请持续关注编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Composer安装配置的过程分析

Composer安装配置的过程分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Windows 和 Linux 下 Composer 的安装及配置介绍: Composer
2023-06-25

Linux下二进制源码包安装mysql的详细过程

这篇文章主要介绍“Linux下二进制源码包安装mysql的详细过程 ”,在日常操作中,相信很多人在Linux下二进制源码包安装mysql的详细过程 问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下二
2023-06-13

Apache源码安装和虚拟主机配置的教程详解

源码安装Apache 1.上传Apache源码安装所需软件包2.安装: 安装顺序 apr—>apr-util—>pcre—>httpd 安装编译环境yum -y install gcc gcc-c++apr 编译安装tar xzf apr
2022-06-04

详解ubuntu20.04下CLion2020.1.3安装配置ROS过程说明

一 下载安装激活CLion 按照网上给的教程就可以 二 配置ROS 1.配置CLion的启动方式 在主目录打开隐藏文件.bashrc,命令是:sudo gedit ~/.bashrc 将CLion的启动文件clion.sh的路径设置为环境变
2022-06-04

Debian 7.8系统安装与配置过程的示例分析

这篇文章将为大家详细讲解有关Debian 7.8系统安装与配置过程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近,我给自己的电脑安装了Debian操作系统,版本7.8 stable。Debi
2023-06-13

【MySQL数据库】最全安装过程及配置详解

🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀
2023-08-16

CentOS 7下安装 redis 3.0.6并配置集群的过程详解

安装依赖[root@centos7-1 ~]# yum -y install gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录