大数据 -- Hadoop集群环境搭建
首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间。
Hadoop主要包含三个模块:
- HDFS模块:HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS是个相对独立的模块,可以为YARN提供服务,也可以为HBase等其他模块提供服务。
- YARN模块:YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop中MapReduce里NameNode负载太大和其他问题而创建的一个框架。YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。
- MapReduce模块:MapReduce是一个计算框架,它给出了一种数据处理的方式,即通过Map阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。多相关信息可以参考博客:初识HDFS(10分钟了解HDFS、NameNode和DataNode)。
本节将会介绍Hadoop集群的配置,目标主机我们可以选择虚拟机中的多台主机或者多台阿里云服务器。
注意:以下所有操作都是在root用户下执行的,因此基本不会出现权限错误问题。
一、Vmware安装
VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式):
桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上;
NAT:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信;
- 仅主机:虚拟机与宿主机直接连起来。
具体区别可以参考博客:Vmware虚拟机下三种网络模式配置。
VMware Workstation Pro 15中文破解版下载地址:http://www.zdfans.com/html/16025.html,参考安装破解教程进行安装。
二、CentOS安装
CentOS7下载地址;http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso。
在Vmware中安装CentOS7的步骤可以参考博客:VMware安装Centos7超详细过程(图文)(包含克隆模式)。
1、网络模式配置为桥接模式,CentOS7网络IP配置参考博客:Centos7虚拟机桥接模式设置静态ip。
2、配置主机名
vi /etc/sysconfig/network
3、配置Host
vi /etc/hosts
192.168.1.100为CentOS7网络IP配置中设置的本机的静态IP地址。
4、关闭防火墙和selinux
service iptables stop
vim /etc/sysconfig/selinux
三 阿里云服务器环境搭建
如果可以申请到阿里云服务器推荐使用阿里云服务器,这里申请的时CentOS 7.2,相关步骤可以参考博客:大数据 -- zookeeper和kafka集群环境搭建第一节。
查看防火墙状态:
systemctl status firewalld
如果是开启,需要利用命令将防火墙关闭:
systemctl stop firewalld
systemctl disable firewalld
四 安装JDK
JDK安装可以参考博客大数据 -- zookeeper和kafka集群环境搭建第二节。
五 伪分布式安装
Hadoop部署模式主要有:本地模式、伪分布模式、完全分布式模式、HA完全分布式模式。
区分的依据是NameNode、DataNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。
模式名称 | 各个模块占用的JVM进程数 | 各个模块运行在几个机器数上 |
---|---|---|
本地模式 | 1个 | 1个 |
伪分布式模式 | N个 | 1个 |
完全分布式模式 | N个 | N个 |
HA完全分布式 | N个 | N个 |
下面我选择将Hadoop伪分布式模式安装在阿里云服务器zy1主机上。伪分布式模式可以看作是完全分布式,但是跑在一个节点上,所有的进程都配置在一个节点上,拥有分布式文件系统,只不过这个系统只有一个节点。
1、下载并解压
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
tar -zxvf hadoop-2.8..tar.gz -C /opt/bigdata
重新命名:
mv hadoop-2.8. hadoop
2、 配置Hadoop环境变量
vim /etc/profile
追加配置:
export HADOOP_HOME=/opt/bigdata/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使配置生效:
. /etc/profile
3、验证HADOOP_HOME参数
echo $HADOOP_HOME
4、 配置 hadoop-env.sh JAVA_HOME参数
修改hadoop-env.sh:
vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME参数为:
export JAVA_HOME=/usr/lib/jvm/java
5、配置core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
添加内容如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://zy1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/bigdata/data/hadoop</value>
</property>
</configuration>
- fs.defaultFS:配置的是HDFS的目录;
- hadoop.tmp.dir:配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
创建临时目录:
mkdir -p /opt/bigdata/data/hadoop
6、配置hdfs-site.xml:
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
添加内容如下:
<configuration>
<property>
<name>dfs.replication</name>
<value></value>
</property>
</configuration>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
7、格式化HDFS:
hdfs namenode -format
注意:如果格式化成功了,不可以再继续格式化,如果想继续格式化可以参考Hadoop1重新格式化HDFS。如果没有格式化成功,需要一直格式化。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/bigdata/data/hadoop目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
ll /opt/bigdata/data/hadoop
其中/opt/bigdata/data/hadoop/dfs/name/current下文件如下:
- fsimage是NameNode元数据在内存满了后,持久化保存到的文件;
- fsimage*.md5 是校验文件,用于校验fsimage的完整性;
- seen_txid 是hadoop的版本;
- vession文件里保存:namespaceID:是文件系统命名空间的唯一标识符,是在NameNode首次格式化时创建的。clusterID:集群ID,对于联邦HDFS非常重要,这里一个集群由多个命名空间组成,且每个命名空间由一个NameNode管理。blockpoolID是数据块池的唯一标识符,数据块池包含了由一个NameNode管理的命名空间中的所有文件。NameNode和DataNode的集群ID应该一致,表明是一个集群。
8、启动NameNode
hadoop-daemon.sh start namenode
9、启动DataNode
hadoop-daemon.sh start datanode
10、 启动SecondaryNameNode
hadoop-daemon.sh start secondarynamenode
11、JPS命令查看是否已经启动成功,有结果就是启动成功了
jps
12、HDFS上测试创建目录、上传、下载文件
HDFS上创建目录:
hdfs dfs -mkdir /demo1
上传本地文件到HDFS上:
hdfs dfs -put ${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1
读取HDFS上的文件内容:
hdfs dfs -cat /demo1/core-site.xml
从HDFS上下载文件到本地:
hdfs dfs -get /demo1/core-site.xml
更多hdfs文件系统的命令可以查看:
hdfs dfs
13、配置mapred-site.xml
默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml:
cd /opt/bigdata/hadoop/
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
添加配置
vim etc/hadoop/mapred-site.xml
指定mapreduce运行在yarn框架上。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
14、配置yarn-site.xml
vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。
<configuration> <!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>zy1</value>
</property>
</configuration>
15、启动Resourcemanager
yarn-daemon.sh start resourcemanager
16、 启动nodemanager
yarn-daemon.sh start nodemanager
17、查看是否启动成功
可以看到ResourceManager、NodeManager已经启动成功了。
18、YARN的Web页面
YARN的Web客户端端口号是8088,通过http://106.15.74.155:8088/可以查看当前执行的job。
注意:由于使用到了8088端口。需要在阿里云中配置入规则,具体可以参考阿里云官方收藏:同一个地域、不同账号下的实例实现内网互通。
19、hdfs的web页面
hdfs的Web客户端端口号是50070,通过http://106.15.74.155:50070/可以查看。
20、运行MapReduce Job
在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。
在hdfs文件系统上创建测试用的Input文件:
hdfs dfs -mkdir -p /wordcountdemo/input
创建原始文件:
在本地/opt/bigdata/data/hadoop目录创建一个文件wc.input,vim /opt/bigdata/data/hadoop/wc.input内容如下:
doop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
将wc.input文件上传到HDFS的/wordcountdemo/input目录中:
hdfs dfs -put /opt/bigdata/data/hadoop/wc.input /wordcountdemo/input
运行WordCount MapReduce Job:
cd /opt/bigdata/hadoop
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8..jar wordcount /wordcountdemo/input /wordcountdemo/output
注意:如果执行一直卡在map 0% reduce 0%,可能是由于硬件配置较低的原因:
更多错误可以查看日志:$HADOOP_HOME/logs:
more $HADOOP_HOME/logs/yarn-root-nodemanager-zy1.log
more $HADOOP_HOME/logs/yarn-root-resourcemanager-zy1.log
如果运行成功,查看输出结果目录:
hdfs dfs -ls /wordcountdemo/output
output目录中有两个文件:
- _SUCCESS文件是空文件,有这个文件说明Job执行成功。
- part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。一个reduce会产生一个part-r-开头的文件。
查看输出文件内容:
hdfs dfs -cat /wordcountdemo/output/part-r-
结果是按照键值排好序的。
21、停止Hadoop
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop secondarynamenode
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanager
22、开启历史服务
Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
mr-jobhistory-daemon.sh start historyserver
开启后,可以通过Web页面查看历史服务器:http://106.15.74.155:19888/
23、开启日志聚集
MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集。
Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
yarn.log-aggregation-enable:是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。
重启Yarn进程:
stop-yarn.sh
start-yarn.sh
重启HistoryServer进程:
mr-jobhistory-daemon.sh stop historyserver
mr-jobhistory-daemon.sh start historyserver
测试日志聚集:运行一个demo MapReduce,使之产生日志:
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8..jar wordcount /wordcountdemo/input /wordcountdemo/output
运行Job后,就可以在历史服务器Web页面查看各个Map和Reduce的日志了。
六 完全分布式安装
完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上。
如果之前你是在虚拟机上创建了zy1主机,那么你可以利用Vmware的克隆功能创建zy2、zy3主机,然后你需要按照第二节的步骤,配置网络、主机名、Host、这里就不过多介绍了。
下面我们以阿里云的三台主机zy1、zy2、zy3为例,搭建完全分布式。
1、服务器功能规划
zy1 | zy2 | zy3 |
---|---|---|
NameNode | ResourceManage | |
DataNode | DataNode | DataNode |
NodeManager | NodeManager | NodeManager |
HistoryServer | SecondaryNameNode |
在zy1节点安装新的Hadoop:
为了和之前zy1机器上安装伪分布式Hadoop区分开来,我们将zy1上的Hadoop服务都停止掉,将伪分布式hadoop的安装目录改为hadoop-wei,修改配置core-site.xml,中的hadoop.tmp.dir为/opt/bigdata/data/hadoop-wei,然后/opt/bigdata/下安装另外一个Hadoop。
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop secondarynamenode
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanager
cd /opt/bigdata
mv hadoop hadoop-wei
vim hadoop-wei/etc/hadoop/core-site.xml #修改hadoop.tmp.dir
mv /opt/bigdata/data/hadoop /opt/bigdata/data/hadoop-wei
我们采用先在第一台机器上解压、配置Hadoop,然后再分发到其他两台机器上的方式来安装集群。
2、解压Hadoop目录
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
tar -zxvf hadoop-2.8..tar.gz -C /opt/bigdata
mv hadoop-2.8.5 hadoop
由于在伪分布式安装时,我们已经配置了hadoop的环境变量,这里就不需要再重复配置了。我们可以通过以下命令验证:
echo $HADOOP_HOME
3、配置 hadoop-env.sh、mapred-env.sh yarn-env.sh JAVA_HOME参数
比如修改hadoop-env.sh:
vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME参数为:
export JAVA_HOME=/usr/lib/jvm/java
4、配置core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
添加内容如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://zy1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/bigdata/data/hadoop</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
- fs.defaultFS为NameNode的地址。
- hadoop.tmp.dir:为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下(但是上面我们通过dfs.datanode.data.dir,和dfs.namenode.data.dir指定了)。应该保证此目录是存在的,如果不存在,先创建;
- dfs.namenode.name.dir:指定目录来供namenode存储永久性的文件系统元数据(如果指定多个路径,使用","隔开)。这些元数据文件会同时备份在所有指定的目录上,通常情况下,通过配置dfs.namenode.data.dir可以将namenode元数据写到一两个本地磁盘和一个远程磁盘(例如NFS挂载目录)之中。这样的话,即使本地磁盘发生故障,甚至整个namenode发生故障,都可以恢复数据文件并重新构成新的namenode(辅助namenode只是定期保存namenode的检查点,不维护namenode的最新备份);
- dfs.datanode.data.dir:可以设定datanode存储数据块的目录列表,上面提到dfs.namenode.name.dir描述一系列目录,其目的是为了支持namenode进行冗余备份。虽然dfs.datanode.data.dir也描述了一系列目录,但是其目的是使datanode循环的在各个目录中写数据。因此,为了提高性能,最好分别为各个本地磁盘指定一个存储目录,这样一来,数据块跨磁盘分布,针对不同的数据块的读操作可以并发执行,从而提高读取速度。
mkdir /opt/bigdata/data/hadoop
注意:NameNode使用到了9000端口,用于建立与datanode节点的通信。因此namenode节点需要在阿里云中配置入规则,具体可以参考阿里云官方收藏:同一个地域、不同账号下的实例实现内网互通。
5、配置hdfs-site.xml
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
添加以下内容:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>zy3:</value>
</property>
<property>
<name>dfs.replication</name>
<value></value>
</property>
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
</configuration>
- dfs.namenode.secondary.http-address:是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将zy3规划为SecondaryNameNode服务器。所以这里设置为:zy3:50090。
- dfs.replication配置的是HDFS存储时的备份数量,这里设置为2;
fs.client.use.datanode.hostname:是否客户端应该使用DN的HostName,在连接DN时,默认是使用IP;(必须设置为true)
dfs.datanode.use.datanode.hostname:是否DN应该使用HostName连接其它DN,在数据传输时。默认是是IP。(必须设置为true)
6、配置masters、slaves
cd hadoop
vim etc/hadoop/masters
vim etc/hadoop/slaves
masters修改为:
slavers:
masters文件是指定HDFS的主节点。
slaves文件是指定HDFS上有哪些DataNode节点。
7、配置mapred-site.xml
默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml:
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
添加配置:
vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>zy1:</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>zy1:</value>
</property>
</configuration>
- mapreduce.framework.name设置mapreduce任务运行在yarn上;
- mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在zy1机器上;
- mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。
8、配置yarn-site.xml
vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>zy2</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value></value>
</property>
</configuration>
- yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法;
- yarn.resourcemanager.hostname指定了Resourcemanager运行在zy2节点上;
yarn.log-aggregation-enable
是配置是否启用日志聚集功能;yarn.log-aggregation.retain-seconds
是配置聚集的日志在HDFS上最多保存多长时间;
9、设置SSH无密码登录
Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的SSH是无密码登录的。
在zy1上生成公钥:
ssh-keygen -t rsa
一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh
目录中会生成公钥文件(id_rsa.pub)
和私钥文件(id_rsa)
。
分发公钥:
ssh-copy-id zy1
ssh-copy-id zy2
ssh-copy-id zy3
设置zy2、zy3到其他机器的无密钥登录:同样的在zy2、zy3上生成公钥和私钥后,将公钥分发到三台机器上。
10、分发Hadoop文件
通过Scp分发:Hadoop根目录下的share/doc目录是存放的hadoop的文档,文件相当大,建议在分发之前将这个目录删除掉,可以节省硬盘空间并能提高分发的速度。
cd /opt/bigdata
rm -rf hadoop/share/doc
scp -r /opt/bigdata/hadoop/ zy2:/opt/bigdata
scp -r /opt/bigdata/hadoop/ zy3:/opt/bigdata
在每个节点下执行:
mkdir /opt/bigdata/data/hadoop
11、格式NameNode
在使用hadoop之前,全新的HDFS安装需要进行格式化。通过创建存储目录和初始化版本的namenode持久数据结构,格式化将创建一个空的文件系统。
在NameNode机器上(节点zy1)执行格式化:
hdfs namenode -format
注意:如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除,不然会报错,NameNode和DataNode所在目录是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir属性配置的。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://zy1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/bigdata/data/hadoop</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
每次格式化,默认是创建一个集群ID,并写入NameNode的VERSION文件中(VERSION文件所在目录为dfs/name/current )。
此时并没有将集群ID写入DataNode的VERSION之中,由于namenode管理所有的文件系统的元数据,datanode可以动态的加入或离开集群,所以初始的格式化过程不涉及datanode。
只有在启动HDFS时,才会将ID写入DataNode的VERSION之中。如果我们重新格式化HDFS,重新格式化时,默认会生成一个新的集群ID,如果不删除原来的数据目录,会导致namenode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时会报错。
12、启动HDFS
在zy1节点运行以下命令:
start-dfs.sh
zy3中的QuorumPeerMain进程不用管,这个是zookeeper进程。
我们来查看以下各个节点的NameNode和DataNode目录:
可以看到已经将集群ID写入DataNode的VERSION之中:
13、启动YARN
start-yarn.sh
在zy2上启动ResourceManager:
yarn-daemon.sh start resourcemanager
14、启动日志服务器
因为我们规划的是在zy1服务器上运行MapReduce日志服务,所以要在zy1上启动:
mr-jobhistory-daemon.sh start historyserver
现在来查看以下每个节点下的日志文件:
15、查看HDFS Web页面
hdfs的Web客户端端口号是50070,通过http://106.15.74.155:50070/可以查看。
16、查看YARN Web 页面
YARN的Web客户端端口号是8088,由于ResourceManager设置在zy2节点上,因此通过http://47.103.134.70:8088/查看当前执行的job。
17、测试Job
测试部分可以参考伪分布式测试内容https://www.cnblogs.com/zyly/p/11209286.html#_label4_16。
在测试时会出现如下错误:
我们需要配置阿里云的入规则,开放三个节点的50010端口:
此外,我们还需要在阿里云安全组规则入规则开放每个节点的8031、8032、50020等等。每个节点具体需要开放什么端口,我们可以通过查看日志获得,以节点zy2,为例:
cat logs/hadoop-root-datanode-zy2.log
cat logs/yarn-root-nodemanager-zy2.log
通过以下命令,可以查看该节点监听的端口:
netstat -ant
如果实在不知道需要在阿里云安全组规则中配置哪些端口,那就打开全部端口,但是这样可能并不安全:
18、hadoop配置信息
Hadoop更多端口相关的配置参考:hadoop端口号配置信息、ResourceManager相关配置参数。
更多Hadoop的参数配置可以惨开:hadoop 参数配置。
19、关闭hadoop
在各个节点下运行如下命令:
cd /opt/bigdata/hadoop
sbin/stop-all.sh
20、重新格式化和启动
在每个节点运行如下命令:
cd /opt/bigdata/hadoop
sbin/stop-all.sh
rm -rf logs/*
rm -rf ../data/hadoop/*
在namenode节点(zy1)运行:
hdfs namenode -format
然后在每个节点运行相应启动hadoop的命令。
21、错误排查
如果hadoop启动出现出错,要学会查看日志,日志位于hadoop安装路径下的logs目录下。
外网无法方位HDFS可以参考:外网无法访问云主机HDFS文件系统。
参考文章
[2]阿里云hadoop安装教程_完全分布式_Hadoop 2.7.4/CentOS 7.4
大数据 -- Hadoop集群环境搭建的更多相关文章
- hadoop集群环境搭建之安装配置hadoop集群
在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/ (如果没有这个目录 ...
- Hadoop集群环境搭建步骤说明
Hadoop集群环境搭建是很多学习hadoop学习者或者是使用者都必然要面对的一个问题,网上关于hadoop集群环境搭建的博文教程也蛮多的.对于玩hadoop的高手来说肯定没有什么问题,甚至可以说事“ ...
- hadoop集群环境搭建之zookeeper集群的安装部署
关于hadoop集群搭建有一些准备工作要做,具体请参照hadoop集群环境搭建准备工作 (我成功的按照这个步骤部署成功了,经实际验证,该方法可行) 一.安装zookeeper 1 将zookeeper ...
- hadoop集群环境搭建准备工作
一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...
- 大数据——Hadoop集群坏境CentOS安装
前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...
- Spark集群环境搭建——Hadoop集群环境搭建
Spark其实是Hadoop生态圈的一部分,需要用到Hadoop的HDFS.YARN等组件. 为了方便我们的使用,Spark官方已经为我们将Hadoop与scala组件集成到spark里的安装包,解压 ...
- 简单Hadoop集群环境搭建
最近大数据课程需要我们熟悉分布式环境,每组分配了四台服务器,正好熟悉一下hadoop相关的操作. 注:以下带有(master)字样为只需在master机器进行,(ALL)则表示需要在所有master和 ...
- Java+大数据开发——Hadoop集群环境搭建(一)
1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...
- 大数据 --> Hadoop集群搭建
Hadoop集群搭建 1.修改/etc/hosts文件 在每台linux机器上,sudo vim /etc/hosts 编写hosts文件.将主机名和ip地址的映射填写进去.编辑完后,结果如下: 2. ...
随机推荐
- MySQL定义char和varchar类型,utf8编码,则最大值为多少?
有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?先明白计算的一些规则限制 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只 ...
- 项目Beta冲刺(团队)——05.25(3/7)
项目Beta冲刺(团队)--05.25(3/7) 格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺(团队) 团队名称:为了交项目干杯 作业目标:记录Beta敏捷冲刺第3 ...
- map test
// mapTest.cpp : Defines the entry point for the console application. // #include "stdafx.h&quo ...
- Spring,Spring MVC,Spring Boot 三者比较
Spring,Spring MVC,Spring Boot 三者比较 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 io ...
- Content-Type与MIME
http://www.cnblogs.com/jsean/articles/1610265.html 首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF. ...
- 12-网页,网站,微信公众号基础入门(编写后台PHP程序,实现Airkiss配网)
https://www.cnblogs.com/yangfengwu/p/11067590.html 首先说一下,这两个地方需要配置一样 网站根目录建个文件夹 airkiss的文件夹 里面放上 ind ...
- 简述tcp三次握手
第一次握手:建立连接时,客户端向服务端发送SYN(同步序列编号),其中包含客户端的初始序号seq(序列号)=x,并进入SYN_SENT(请求连接)状态,等待服务器确认. 第二次握手:服务器收到请求后, ...
- 服务器使用bbr加速配置
服务器内核升级: 以centos7为例,配置之前可使用以下命令查看内核版本,若是4.0以上则无需对内核升级: uname -r 对内核升级的方法: 直接使用以下命令进行内核版本的下载: rpm --i ...
- 使用charles对jmeter进行抓包
- Java8中HashMap扩容算法小计
Java8的HashMap扩容过程主要就是集中在resize()方法中 final Node<K,V>[] resize() { // ...省略不重要的 } 其中,当HashMap扩容完 ...