最近负责的项目准备上大数据平台存储, 主要还是围绕 Hadoop 平台来实现, 虽然打算上 cdh 版本的 hadoop, 但是为了前期方便开发还是先使用原声的 hadoop 进行开发, 后期再准备更好的环境进行扩展.
环境准备
三台服务器系统环境是建立在 Centos7.6 基础上. 并且是建立在 root 账户上运行的, 如果需要使用其他用户操作, 注意权限的问题
基础机器分配
在三台新购买的服务器上进行搭建. 服务器规划如下
hostname | ip | 说明 |
---|---|---|
tidb1 | 192.168.108.66 | namenode 与 datanode |
tidb2 | 192.168.108.67 | namenode 与 datanode |
tidb3 | 192.168.108.68 | namenode 与 datanode |
搭建大数据集群基础机器配置是三台, 真实环境部署建议 namenode 与 datanode 进行分开, 两台机器专门做 namenode 节点, 其他三台做 datanode 节点.
每台机器安装内容如下:
tidb1 | tidb2 | tidb3 | |
---|---|---|---|
NameNode | √ | √ | |
DataNode | √ | √ | √ |
ResourceManager | √ | √ | |
NodeManager | √ | √ | √ |
Zookeeper | √ | √ | √ |
journalnode | √ | √ | √ |
zkfc | √ | √ |
在 3.0 版本以上, 我们可以进行安装多个 NameNode 节点, 来保证更高的高可用方案. 但是作为基础的测试环境开发这样就是可以了, 更多机器扩展也在此进行扩展即可.
防火墙
三台机器都需要这么做
部署集群之前将集群的防火墙进行关闭, 否则部署出现, 访问端口访问不到的情景.
CentOS 系统中存在两种防火墙, firewall 与 iptables , 7.0 以后默认是 firewall 防火墙, 但是也在网上看到其他朋友遇见过 7.0 系统上存在两种防火墙策略导致布置程序端口一直访问不到的情况.
firewall
查看防火墙的状态
- [root@tidb1 sbin]# firewall-cmd --state
- running
停止防火墙
systemctl stop firewalld.service
禁止开机启动
systemctl disbale firewalld.service
执行以上三步之后, 程序再开机之后不再出现防火墙的配置问题.
iptabel
如果是这个防火墙的配置, 我们也需要进行防火墙的关闭, 如果熟悉的话其实打开对应的端口策略即可.
查看防火墙的状态
service iptables status
停止防火墙
- service iptables stop
- Redirecting to /bin/systemctl stop iptables.service
禁止开机启动
chkconfig iptables off
对于安装在其他系统上的集群环境, 按照对应的策略进行关闭防火墙.
Selinux
三台机器都需要这么做
关于这个增强型 Linux, 网上很多都建议关闭, 在这里搜索下了相关资料, 主要是没有人进行专门的维护运营白名单导致的.
测试环境上我们也进行关闭, 方便我们集群的搭建. 正式上线根据运维的需要进行部署执行.
查看 SELinux 当前状态:
getenforce
修改 SELinux 状态 (临时修改, 重启机器后失效)
- setenforce 0 #将 SELinux 修改为 Permissive 状态 (遇到违反安全策略的, 会采取警告, 允许通过)
- setenforce 1 #将 SELinux 状态修改为 Enforcing 状态 (遇到违反安全策略的, 不允许通过)
修改 SELinuxw 为禁用状态 (永久性, 重启机器后保持生效)
打开文件: /etc/selinux/config 修改 SELINUX = disabled
重启机器后生效, 重启机器命令: reboot
ip 固定
三台机器都需要这么做
在企业环境中, 如果是真实的服务器, 不是利用云服务器, 那么我们使用服务器之前需要进行 ip 的固定, 不然服务器出现意外重启, 会导致我们 ip 变动, 集群就不能正常启动.
固定 ip, 两种执行方案:
有专门的人员路由器端进行固定分配, 这样是最简单的操作步骤. 建议这么做
给专门的网卡进行固定 ip, 很多时候服务器是有双网卡与光口的, 其参考以下步骤, 仅供参考
查看网卡 (文件 ifcfg-enp* 为网卡文件)
ls /etc/sysconfig/network-scripts/
配置网卡 ip
- vi /etc/sysconfig/network-scripts/ifcfg-enp*
- # 启用 host-only 网卡
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-enp0s3 ifcfg-enp0s8
修改网卡为静态 ip
修改 BOOTPROTO 为 static
修改 NAME 为 enp0s8
修改 UUID(可以随意改动一个值, 只要不和原先的一样)
添加 IPADDR, 可以自己制定, 用于主机连接虚拟机使用.
添加 NETMASK=255.255.255.0 (网管 也可以和网段一样 x.x.x.255)
配置静态 ip
重启网卡
service network restart
配置 hosts
三台机器都需要这么做
重点注意, 配置主节点 Namenode 的时候, 需要将 localhost 两行 注释掉, 不然会出现找不到 hostname 的问题. 其他节点可以存在
- VIM /etc/hosts
- [root@tidb1 network-scripts]# cat /etc/hosts
- #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.108.66 tidb1
- 192.168.108.67 tidb2
- 192.168.108.68 tidb3
配置免登陆
老生常态, 集群之间需要通过 SSH, 互相通信, 那么需要设置免登陆的情况.
步骤如下:
生成秘钥
SSH-keygen -t rsa -P '' -f ~/.SSH/id_rsa
写入 authorized_keys
cat ~/.SSH/id_rsa.pub>> ~/.SSH/authorized_keys`
注意权限问题
chmod 0600 ~/.SSH/authorized_keys
拷贝到其他服务器上
- SSH-copy-id root@tidb2
- SSH-copy-id root@tidb3
尝试是否能互相免登陆
- SSH tidb2
- SSH tidb3
- SSH tidb1
在每条机器上, 都需要进行操作, 实现免登陆, 如果存在免登陆失败
检查配置的免登陆秘钥是否正确, 一般是秘钥出现错误导致的.
秘钥没有问题, 文件的权限是否正确 , 进行第三步权限的修改.
目录权限的问题, 解决.
- sudo chmod 700 ~
- sudo chmod 700 ~/.SSH
- sudo chmod 600 ~/.SSH/authorized_keys
准备需要安装的软件
hadoop HA 版本我们需要使用 zookeeper 来实现, 所以需要准备的软件就有这样三个了 hadoop ,zookeeper,jdk1.8 版本.
1. 创建三个软件的存储位置
- mkdir zookeeper
- mkdir hadoop
- mkdir java
2. 下载软件
移动到相应的目录下 下载软件
- wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
- wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1-src.tar.gz
jdk 去 oracle 网站进行下载再上传到我们服务器的目录上.
3. 进行相应的解压
- tar -zxvf zookeeper-3.4.13.tar.gz
- tar -zxvf hadoop-3.1.1-src.tar.gz
- tar -zxvf jdk1.8.tar.gz
安装
以上基础内容都配置好之后, 我们就可以开始进行程序的安装了. 首先在第一台机器上进行配置好之后在通过 rsync 进行同步发送过去
rsync 安装
CentOS 上的安装, 每台都需要进行安装
rpm -qa | grep rsync 检查是否安装无哦 rsync
yum install -y rsync 使用 yum 安装 rsync
Java 环境的安装
进入解压的 Java 文件路径下
cd /home/bigdata/java/jdk1.8
pwd 找到路径信息
配置环境变量
- JAVA_HOME=/home/bigdata/java/jdk1.8
- JRE_HOME=/home/bigdata/java/jdk1.8/jre
- CLASS_PATH=.:$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 CLASS_PATH PATH
同步到其他服务器
- tidb2:
- rsync -avup /etc/profile root@tidb2:/etc/
- tidb3:
- rsync -avup /etc/profile root@tidb3:/etc/
执行生效
三台都执行
source /etc/profile
如果是使用的个人用户需要执行
source ~/.bashrc
zookeeper 安装
进入到上面的解压的目录下
cd /home/bigdata/zookeeper/zookeeper-3.4.13
zookeeper 目录结构
增加 zoo.cfg 文件
cd /home/bigdata/zookeeper/zookeeper-3.4.13/conf cp zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg bak_zoo_sample.cfg 备份文件
编辑 zoo.cfg
修改之前 创建 dataDir 文件 mkdir -p /home/bigdata/zookeeper/zookeeper-3.4.13/tmp
在原先的基础内容上增加 server 配置内容与配置 dataDir 文件内容
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # 修改的 dataDir 文件路径, 配置临时文件路径内容即可, 配置的文件路径需要提前创建好 # example sakes. dataDir=/home/bigdata/zookeeper/zookeeper-3.4.13/tmp # the port at which the clients will connect clientPort=2181 # 配置 server 几台机器就配置几台即可, 注意 server 的数字, 我们在后续需要用到 server.1=tidb1:2888:3888 server.2=tidb2:2888:3888 server.3=tidb3:2888:3888 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purg
上面的基本配置信息内容如下:
tickTime: 心跳基本时间单位, 毫秒级, ZK 基本上所有的时间都是这个时间的整数倍.
initLimit: tickTime 的个数, 表示在 leader 选举结束后, followers 与 leader 同步需要的时间, 如果 followers 比较多或者说 leader 的数据灰常多时, 同步时间相应可能会增加, 那么这个值也需要相应增加. 当然, 这个值也是 follower 和 observer 在开始同步 leader 的数据时的最大等待时间 (setSoTimeout)
syncLimit : tickTime 的个数, 这时间容易和上面的时间混淆, 它也表示 follower 和 observer 与 leader 交互时的最大等待时间, 只不过是在与 leader 同步完毕之后, 进入正常请求转发或 ping 等消息交互时的超时时间.
dataDir : 内存数据库快照存放地址, 如果没有指定事务日志存放地址 (dataLogDir), 默认也是存放在这个路径下, 建议两个地址分开存放到不同的设备上
clientPort : 配置 ZK 监听客户端连接的端口 clientPort=2181
server.serverid=host:tickpot:electionport 固定写法
server: 固定写法
serverid: 每个服务器的指定 ID(必须处于 1-255 之间, 必须每一台机器不能重复)
host: 主机名
tickpot: 心跳通信端口
electionport: 选举端口
创建需要的文件夹
mkdir -p /home/bigdata/zookeeper/zookeeper-3.4.13/tmp echo 1> /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid
同步到其他服务器上
rsync -avup /home/bigdata/zookeeper root@tibd2:/home/bigdata/ rsync -avup /home/bigdata/zookeeper root@tibd3:/home/bigdata/
修改其他服务器上的 myid
tidb2:
VIM /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid 将 1 改为 2
tidb3:
VIM /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid 将 1 改为 3
配置环境变量
JAVA_HOME=/home/bigdata/java/jdk1.8 JRE_HOME=/home/bigdata/java/jdk1.8/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib ZOOKEEPER_HOME=/home/bigdata/zookeeper/zookeeper-3.4.13 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH ZOOKEEPER_HOME source /etc/profile
进行验证是否正常.
以上 7 个步骤执行完毕后, 我们需要进行 zookeeper 的验证是否正确, 将每台服务器上的 zookpeer 进行启动
小黑板, 三台都需要执行
cd /home/bigdata/zookeeper/zookeeper-3.4.13/bin
执行 ./zkServer.sh start
检查是否启动
方式 1 :
使用命令 jps 检查是否执行成功, jps 不存在的执行下安装 检查是否 有这个配置 export PATH=$PATH:/usr/java/jdk1.8/bin
85286 QuorumPeerMain 代表执行成功
方式 2:
./zkServer.sh status [root@tidb1 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/bigdata/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower 代表是从节点
Mode: Leader 代表的是主节点
Hadoop 的安装
基础文件的创建
安装过程中我们需要一些目录文件进行存储我们的数据, 日志文件, 数据存储文件都是保存在不同的目录中, 需要提前准备好
数据存储
每台机器上三个硬盘, 需要三个目录进行创建
mkdir -p /media/data1/hdfs/data mkdir -p /media/data2/hdfs/data mkdir -p /media/data3/hdfs/data
journal 内容存储
mkdir -p /media/data1/hdfs/hdfsjournal
namenode 内容存储路径
mkdir -p /media/data1/hdfs/name
修改相关的配置文件
配置 Java 环境
编辑 hadoop 中的 hadoop-env.sh 文件
VIM /home/bigdata/hadoop/hadoop/etc/hadoop/hadoop-env.sh
配置 jdk 环境 , 在这里还可以配置 jvm 内存大小等内容
export JAVA_HOME=/home/bigdata/java/jdk1.8 #export HADOOP_NAMENODE_OPTS="-Xms1024m -Xmx1024m -XX:+UseParallelGC" #export HADOOP_DATANODE_OPTS="-Xms512m -Xmx512m" #export HADOOP_LOG_DIR=/opt/data/logs/hadoop 配置日志文件
配置 core-site.xml
VIM /home/bigdata/hadoop/hadoop/etc/hadoop/core-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 制定 hdfs 的 nameservice , 默认的链接地址 , 自己可以自定义的 --> <property> <name>fs.defaultFS</name> <value>hdfs://cluster</value> </property> <!-- 临时文件 存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/media/data1/hdfstmp</value> </property> <!-- 指定 zookeeper , 还可以更多的设置超时时间等内容 --> <property> <name>ha.zookeeper.quorum</name> <value>tidb1:2181,tidb2:2181,tidb3:2181</value> </property> </configuration>
配置 hdfs-site.xml
VIM /home/bigdata/hadoop/hadoop/etc/hadoop/hdfs-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 配置的 nameservice 的名字 , 需要与 core-site.xml 中保持一致, 并且利用其名称与 namenode 设置唯一标识 --> <property> <name>dfs.nameservices</name> <value>cluster</value> </property> <!-- 配置的权限问题 --> <property> <name>dfs.permissions.enabled</name> <value>false</varsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/lue> </property> <!-- 配置 cluster 下面的 namenode 名称 --> <property> <name>dfs.ha.namenodes.cluster</name> <value>nn1,nn2</value> </property> <!-- 配置 namenode 的 地址与端口 --> <property> <name>dfs.namenorsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/de.rpc-address.cluster.nn1</name> <value>tidb1:9000</value> </property> <property> <name>dfs.namenode.rpc-address.cluster.nn2</name> <value>tidb2:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster.nn1</name> <value>tidb1:50070</value> </property> <property> <name>dfs.namenode.http-address.cluster.nn2</name> <value>tidb2:50070</value> </property> <!-- journal namenode 同步 namenode 的元数据共享存储位置. 也就是 journal 的列表信息 -> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://tidb1:8485;tidb2:8485;tidb3:8485/cluster</value> </property>rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ <!-- 配置高可用方案内容, 失败后自动切换的方式 --> <property> <name>dfs.client.failover.proxy.provider.cluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!--ssh 方案配置 --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property>hdfs-site.xml <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>/media/data1/hdfs/hdfsjournal</value> </property> <!-- 开启 NameNode 失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!--namenode 文件路径信息 --> <property> <name>dfs.namenode.name.dir</name> <value>/media/data1/hdfs/name</value> </property> <!--datanode 数据保存路径, 配置多个数据盘 --> <property><property> <name>dfs.namenode.name.dir</name> <value>/media/data1/hdfs/name</value> </property> <name>dfs.datanode.data.dir</name> <value>/media/data1/hdfs/data, /media/data2/hdfs/data, /media/data3/hdfs/data </value> </property> <!-- 设置的副本数量, 在程序汇总副本的系数是可以更改的 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 开启 webhdfs 接口访问 --> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.journalnode.http-address</name> <value>0.0.0.0:8480</value> </property> <property> <name>dfs.journalnode.rpc-address</name> <value>0.0.0.0:8485</value> </property> <!-- 配置 zookeeper--> <property> <name>ha.zookeeper.quorum</name> <value>tidb1:2181,tidb2:2181,tidb3:2181</value> </property> </configuration>
修改 mapred-site.xml
VIM /home/bigdata/hadoop/hadoop/etc/hadoop/mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 指定 mr 配置 yarn 信息 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 指定 mapreduce jobhistory 地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>tidb1:10020</value> </property> <!-- 任务历史服务器的 web 地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>tidb1:19888</value> rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ </property> </configuration> yarn-site.xml VIM /home/bigdata/hadoop/hadoop/etc/hadoop/yarn-site.xm <?xml version="1.0"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, softwarersync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Site specific YARN configuration properties --> <configuration> <!-- 配置 namenode 的 ha id namenode 节点上进行配置 , 可不配置 --> <property> <name>yarn.resourcemanager.ha.id</name> <value>rm1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ </property> <!-- Site specific YARN configuration properties --> <!-- 启用 resourcemanager ha--> <!-- 是否开启 RM ha, 默认是开启的 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 声明两台 resourcemanager 的地址 --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>rmcluster</value> </property> <!-- 制定 rm 的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 指定 rm 的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>tidb1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>tidb2</value> </property> <!-- 指定 zookeeper 集群的地址 --> rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ <property> <name>yarn.resourcemanager.zk-address</name> <value>tidb1:2181,tidb2:2181,tidb3:2181</value> </property> <!-- 启用自动恢复, 当任务进行一半, rm 坏掉, 就要启动自动恢复, 默认是 false--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!-- 指定 resourcemanager 的状态信息存储在 zookeeper 集群, 默认是存放在 FileSystem 里面.--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> </configuration> workers /home/bigdata/hadoop/hadoop/etc/hadoop/workers # 将数据节点加入到 workers 里面, 如果 namenode 与 datanode 节点是分开的, 在这里 namenode 的节点就不加入到这里. # 没有分开那么就需要加入 tidb1 tidb2 tidb3 start-dfs.sh stop-dfs.sh VIM /home/bigdata/hadoop/hadoop/sbin/start-dfs.sh VIM /home/bigdata/hadoop/hadoop/sbin/stop-dfs.sh
3.0 版本以后需要增加以下内容
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root HDFS_JOURNALNODE_USER=root HDFS_ZKFC_USER=root start-yarn.sh stop-yarn.sh VIM /home/bigdata/hadoop/hadoop/sbin/start-yarn.sh VIM /home/bigdata/hadoop/hadoop/sbin/stop-yarn.sh YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
通过 rsync 同步到其他机器上
rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/ rsync -avup hadoop-3.1.1 root@tidb3:/home/bigdata/hadoop/
同步完之后 如果配置的 namenode 的编号需要注意以下内容:
修改 namenode 上的 id 编号, datanode 上的编号进行删除,
启动
上面的所有文件准备好之后, 我们开始进行启动了.
Zookeeper->JournalNode-> 格式化 NameNode-> 创建命名空间 zkfs->NameNode->Datanode->ResourceManager->NodeManager
启动 zookeeper
每台进入到安装的 zookeeper 目录下
./zkServer.sh start
启动 journalnode
进入到 hadoop 的安装目录下 然后进到 sbin 目录下
./hadoop-daemon.sh start journalnode 启动 journalnode
格式化 namenode
格式化
hadoop namenode -format
格式化同步内容到其他节点上, 必须做, 不然其他 namenode 启动不起来
同步的内容: 配置 hdfs-site.xml 文件路径下的内容
<property> <name>dfs.namenode.name.dir</name> <value>/media/data1/hdfs/name</value> </property>
进行同步
rsync -avup current root@tidb2:/media/data1/hdfs/name/ rsync -avup current root@tidb3:/media/data1/hdfs/name/
格式化 zkfc
小黑板: 只能在 namenode 上进行格式化 namdenode1
./hdfs zkfs -formatZK
关闭 journalnode
./hadoop-daemon.sh stop journalnode
启动 hadoop 集群
hadoop 目录下的 sbin 目录执行
./start-all.sh 全部启动.
启动情况查看
使用命令查看
[root@tidb1 bin]# ./hdfs haadmin -getServiceState nn1 standby [root@tidb1 bin]# ./hdfs haadmin -getServiceState nn2 active
界面查看
http://192.168.108.66:50070 # 注意这个端口是自定义的, 不是默认端口 http://192.168.108.67:50070
备用节点
主节点
来源: http://www.jianshu.com/p/de8d3260f744