非HA的安装步骤

https://www.cnblogs.com/live41/p/15467263.html

一、部署设定

1.服务器

c1   192.168.100.105    zk、namenode、zkfc、datanode、nodemanager
c2   192.168.100.110    zk、namenode、zkfc、datanode、nodemanager、resourcemanager、journalnode
c3   192.168.100.115    zk、datanode、nodemanager、resourcemanager、journalnode
c4   192.168.100.120    zk、datanode、nodemanager、resourcemanager、journalnode

2.目录

Hadoop NameNode目录    /home/hadoop/hdfs/name
Hadoop DataNode目录      /home/hadoop/hdfs/data
Hadoop JournalNode目录  /home/hadoop/hdfs/journal
Hadoop临时目录                /home/hadoop/tmp
ZooKeeper数据目录           /home/zookeeper/data/
ZooKeeper日志目录           /home/zookeeper/logs/

* 以上目录在每台机都要手动创建

二、系统配置

* 每台机都要执行

https://www.cnblogs.com/live41/p/15467263.html

执行这篇文章的第二点的步骤

三、下载安装包及配置系统环境变量

* 每台机都要执行

1.下载及解压

https://downloads.apache.org/hadoop/common/

http://zookeeper.apache.org/releases.html

解压到/home/目录

2.配置环境变量

vim ~/.bashrc

在末尾加入以下内容:

export HADOOP_HOME=/home/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/home/zookeeper/bin export HADOOP_COMMON_HOME=/home/hadoop
export HADOOP_HDFS_HOME=/home/hadoop
export HADOOP_MAPRED_HOME=/home/hadoop
export HADOOP_CONF_DIR=/home/hadoop/etc/hadoop export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root export YARN_HOME=/home/hadoop
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

更新环境变量

source ~/.bashrc

四、安装和配置ZooKeeper

* 每台机都要执行

1.创建data和logs目录

mkdir -pv /home/zookeeper/{data,logs} 

2.编辑zoo.cfg

cd /home/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

修改属性或添加内容:

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181 dataDir=/home/zookeeper/data/
dataLogDir=/home/zookeeper/logs server.1=c1:2888:3888
server.2=c2:2888:3888
server.3=c3:2888:3888
server.4=c4:2888:3888

3.创建myid

echo 1 > /home/zookeeper/data/myid

* 其中数字是每台机不同,例如第1台是1,第2台是2,第3台是3,第4台是4.

4.启动ZooKeeper节点

zkServer.sh start

5.测试状态

zkServer.sh status

不同节点会不同,有1个leader和多个follower

五、安装和配置Hadoop

* 不用每台机执行,只在c1机执行,再通过scp命令同步配置文件给其它机

1.进入配置目录

cd $HADOOP_HOME/etc/hadoop

2.编辑hadoop-env.sh

vim hadoop-env.sh

添加以下行(已有的不用改):

export JAVA_HOME=/usr/bin/jdk1.8.0
export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}

* 这里的JAVA_HOME根据你安装的路径来修改。

3.编辑core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns6/</value> <!--该属性对应的是hdfs-site.xml的dfs.nameservices属性-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>c1:2181,c2:2181,c3:2181,c4:2181</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>1000</value>
</property>
</configuration>

4.编辑hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property> <!-- core-site.xml中使用的是这里的配置值 -->
<property>
<name>dfs.nameservices</name>
<value>ns6</value>
</property> <property>
<name>dfs.ha.namenodes.ns6</name>
<value>nn1,nn2</value>
</property> <property>
<name>dfs.namenode.rpc-address.ns6.nn1</name>
<value>c1:9000</value>
</property> <property>
<name>dfs.namenode.http-address.ns6.nn1</name>
<value>c1:50070</value>
</property> <property>
<name>dfs.namenode.rpc-address.ns6.nn2</name>
<value>c2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns6.nn2</name>
<value>c2:50070</value>
</property> <!-- 就是JournalNode列表,url格式:
qjournal://host1:port1;host2:port2;host3:port3/journalId
journalId推荐使用nameservice,默认端口号是:8485 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://c1:8485;c2:8485;c3:8485;c4:8485/ns6</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/hdfs/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns6</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>~/.ssh/id_rsa</value> <!-- 或/root/.ssh/id_rsa -->
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
<value>60000</value>
</property>
</configuration>

5.编辑mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>c1:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>c1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>c1:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://c1:9001</value>
</property>
</configuration>

6.编辑yarn-site.xml

<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property> <property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yn6</value> <!-- 可自行定义cluster-id -->
</property> <property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property> <property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>c1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>c2</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>c1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>c2:8088</value>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property> <property>
<name>yarn.resourcemanager.zk-address</name>
<value>c1:2181,c2:2181,c3:2181,c4:2181</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property> <property>
<name>yarn.application.classpath</name>
<value>/home/hadoop/etc/hadoop:/home/hadoop/share/hadoop/common/lib/*:/home/hadoop/share/hadoop/common/*:/home/hadoop/share/hadoop/hdfs:/home/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/share/hadoop/hdfs/*:/home/hadoop/share/hadoop/mapreduce/*:/home/hadoop/share/hadoop/yarn:/home/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/share/hadoop/yarn/*</value>
</property>
</configuration>

7.配置workers

vim workers

添加以下内容:

c1
c2
c3
c4

8.同步配置文件

由于前面已经配置过免密登录,所以可以先配置c1机的文件,再通过scp同步给其它机。

cd /home/hadoop/etc/hadoop
scp *.* c2:/home/hadoop/etc/hadoop
scp *.* c3:/home/hadoop/etc/hadoop
scp *.* c4:/home/hadoop/etc/hadoop

六、启动Hadoop

* 只在c1机执行

1.启动JournalNode

hdfs --workers --daemon start journalnode

旧版命令如下:

hadoop-daemons.sh start journalnode

旧版命令也能执行,但会报警告信息。

* 有2个相似文件:hadoop-daemon.sh和hadoop-daemons.sh

* 前者(没带s)的是只执行本机的journalnode,后者(有带s)是执行所有机器的journalnode。

* 注意不要输错~!

2.格式化NameNode

hadoop namenode -format

格式化后同步namenode的信息文件给c2机。因为有2个NameNode节点,c1和c2

scp -r /home/hadoop/hdfs/name/current/ c2:/home/hadoop/hdfs/name/

3.格式化zkfc

hdfs zkfc -formatZK

zkfc = ZKFailoverController = ZooKeeper Failover Controller

zkfc用于监控NameNode状态信息,并进行自动切换。

4.启动HDFS和Yarn

start-dfs.sh
start-yarn.sh

* 这步是最经常报错的,部分错误及解决方法见下面附录。

5.检查进程

jps

6.检查节点状态

hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

7.关闭Hadoop

stop-yarn.sh
stop-dfs.sh

七、使用Hadoop

* 只在c1机执行

1.Web页面

http://192.168.100.105:50070/

2.使用命令

https://www.cnblogs.com/xiaojianblogs/p/14281445.html

附录

* 每台机都要执行

1.没有配置用root启动Hadoop

错误提示信息:

Starting namenodes on [master]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

解决方法:

(1) 修改start-dfs.sh和stop-dfs.sh,在头部添加以下内容:

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

(2) 修改start-yarn.sh和stop-yarn.sh,在头部添加以下内容:

#!/usr/bin/env bash
HADOOP_SECURE_DN_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

* 可以先在c1机修改,用scp同步给其它机器

2.重新格式化后的IO错误

错误提示信息(多种):

Incompatible clusterIDs in /home/hadoop/hdfs/data
Failed to add storage directory [DISK]file
Directory /home/hadoop/hdfs/journal/ns6 is in an inconsistent state: Can't format the storage directory because the current directory is not empty.

解决方法:

在格式化之前,先把name、data、logs等目录里面的文件先清除掉。注意只是删除里面的文件,不删除目录

Hadoop的HA(ZooKeeper)安装与部署的更多相关文章

  1. Hadoop分布式HA的安装部署

    Hadoop分布式HA的安装部署 前言 单机版的Hadoop环境只有一个namenode,一般namenode出现问题,整个系统也就无法使用,所以高可用主要指的是namenode的高可用,即存在两个n ...

  2. Zookeeper安装和部署

    Zookeeper安装和部署:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用 ...

  3. zookeeper安装及部署

    安装及部署 一. 单机安装.配置 1.下载zookeeper二进制安装包 下载 curl -L -O http://apache.fayea.com/zookeeper/stable/zookeepe ...

  4. [hadoop][会装]zookeeper安装

    1.简介 分布式场景下的各个进程间的协调运作离不开zookeeper, zookeeper已经是大数据领域提供分布式协调服务的事实标准. 本文只介绍zookeeper的安装方法. 2. 节点规划如下: ...

  5. ZooKeeper安装、部署

    一.简介       ZK的安装和配置十分简单,既可以配置成单机模式,也可以配置成集群模式,zk使用java编写的运行在java环境上,3个ZK服务进程是建议的最小进程数量,而且建议部署在不通的物理机 ...

  6. Hadoop的伪分布式安装和部署的流程

    1.准备工作 下载一些用到的命令 yum install -y vim yum install -y lrzsz yum install net-tools 目录约定 /opt #工作目录 /opt/ ...

  7. Hadoop的伪分布式安装和部署流程

    在opt目录创建install software test other四个目录 /opt/installed #安装包/opt/software #软件包/opt/other #其他/opt/test ...

  8. [hadoop][会装]hadoop ha模式安装

    1.简介 2.X版本后namenode支持了HA特性,使得整个文件系统的可用性更加增强. 2.安装前提 zookeeper集群,zookeeper的安装参考[hadoop][会装]zookeeper安 ...

  9. hadoop 2.x HA(QJM)安装部署规划

    一.主机服务规划: db01                                             db02                                      ...

随机推荐

  1. 【转】asp.net core环境变量详解

    asp.net core环境变量详解 环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的环境 ...

  2. select后给字段起别名,where和group后不能用,但having后可以

    为什么mysql having的条件表达式可以直接使用select后的别名? SQL语句的语法顺序: FROM -> WHERE -> GROUP BY -> HAVING -> ...

  3. 第一节:《线程安全和锁Synchronized概念》

    第一节:线程安全和锁Synchronized概念 一.进程与线程的概念 (1)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程. 在未配置 OS 的系统中,程序的执行方 ...

  4. Java基础系列(24)- 增强for循环

    增强for循环 这里我们先只是见一面,做个了解,之后数组部分会重点使用 Java5引入了一种主要用于数组或集合的增强型for循环 Java增强for循环语法格式如下 for(声明语句:表达式){ // ...

  5. 剑指offer计划25(模拟中等)---java

    1.1.题目1 剑指 Offer 29. 顺时针打印矩阵 1.2.解法 常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制. 创建res数组存放结果. 循坏开始,遍历完一行或者一列,就将 ...

  6. jmeter 录制排除模式

    jmeter录制时,静态的资源不需要,可以在录制的时候直接排除. .*\.(bmp|css|js|gif|icov|jpeg|png|swf|woff|woff2|htm|html).* .*\.(j ...

  7. Java对象构造

    关于对象构造的一些认识. 默认域初始化 如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋予默认值:数值为0,布尔值为false,对象引用为null.然而,这显然是不安全的,在一个null引用上 ...

  8. thinkphp5.0框架运行机制分享小结

    1 访问index.php 入口文件,定义应用目录,加载框架引导文件 <?php // [ 应用入口文件 ] // 定义应用目录 define('APP_PATH', __DIR__ . '/. ...

  9. 『Python』优雅的记录日志——loguru

    1. 安装 pip install loguru 2. 初识 from loguru import logger logger.debug("This is a debug..." ...

  10. 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的 | 百篇博客分析OpenHarmony源码 | v7.07

    百篇博客系列篇.本篇为: v07.xx 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调 ...