Hadoop学习笔记二 集群环境搭建
Posted 我是坏人哦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop学习笔记二 集群环境搭建相关的知识,希望对你有一定的参考价值。
零、准备工作
准备三台Linux服务器。本文是在自己的台式机上安装了虚拟机工具(vmware和virtualbox都行),装3台CentOS7虚拟机。
集群规划:
hadoop001 192.168.164.10 | hadoop002 192.168.164.20 | hadoop003 192.168.164.30 | |
HDFS集群 | NameNode | SecondaryNameNode | |
DataNode | DataNode | DataNode | |
Yarn集群 | NodeManager | NodeManager | ResourceManager |
一、 配置网络
1. 修改网络配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
加入以下几项:
IPADDR=192.168.164.10(自己设置的IP)
NETMASK=255.255.255.0
GATEWAY=192.168.164.2
DNS1=192.168.164.2
DNS2=114.114.114.114
重启网络服务
service network restart
测试ping一下百度看通不通
ping www.baidu.com
2. 安装ifconfig
yum search ifconfig #查找对应的net-tools包
yum install net-tools.x86_64 -y
安装后查看一下IP地址
3. 关闭防火墙
systemctl stop firewalld
iptables -F
4. 修改selinux配置为disabled
vi /etc/selinux/config
5. 修改主机名
hostnamectl set-hostname hadoop001
6. 配置hosts
vi /etc/hosts
加入以下内容
192.168.164.10 hadoop001
192.168.164.20 hadoop002
192.168.164.30 hadoop003
7. 配置免密登录
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.164.10
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.164.20
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.164.30
8. 装rsync,用于分发脚本
yum install -y rsync
9. 重复1-8
在另外两台服务器重复步骤1-8(对应的IP和主机名记得修改)
10. 配置集群时间同步
yum -y install ntp #安装ntp
systemctl enable ntpd #设置开机启动
systemctl start ntpd.service #启动ntp
systemctl is-enabled ntpd #检查是否启动成功
配置主从服务器(本文选择hadoop003,即192.168.164.30作为server)
#时间主服务器(hadoop003)
vi /etc/ntp.conf
#加上
restrict 192.168.164.0 mask 255.255.255.0 nomodify notrap
#加上
server 127.127.1.0
fudge 127.127.1.0 stratum 10
#从服务器(hadoop001和hadoop002)
vi /etc/ntp.conf
#加上
server 192.168.164.30
二、三台机器安装jdk
Jdk下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
下载完之后上传到服务器上,路径:/usr/local/apps/。解压
tar -zxvf jdk-8u291-linux-x64.tar.gz
设置环境变量
vi /etc/profile
添加以下配置
export JAVA_HOME=/usr/local/apps/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
执行source指令使配置生效
source /etc/profile
检查是否安装成功
java -version
这样就表示安装成功了
三、三台机器安装Hadoop
Hadoop下载地址:https://archive.apache.org/dist/hadoop/common
下载后上传到其中一台服务器,路径/usr/local/apps/。解压
tar -zxvf hadoop-2.9.2.tar.gz
配置环境变量
vi /etc/profile
添加以下配置
export HADOOP_HOME=/usr/local/apps/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
执行source指令使之生效
source /etc/profile
检查是否安装成功
hadoop version
这样就表示安装成功了
进入安装好的hadoop目录里面
cd hadoop-2.9.2/etc/hadoop/
四、集群配置
在hadoop001进行以下配置。所有的可配置项可以参考官网下的Configuration
HDFS集群
1. hadoop-env.sh:配置JDK路径
# JDK安装路径
export JAVA_HOME=/usr/local/apps/jdk1.8.0_291
2. core-site.xml:指定NameNode节点以及数据存储目录
<configuration>
<property>
<!--指定 namenode 的 hdfs 协议文件系统的通信地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:8070</value>
</property>
<property>
<!--指定 hadoop 存储临时文件的目录-->
<name>hadoop.tmp.dir</name>
<value>/usr/local/apps/hadoop-2.9.2/tmp</value>
</property>
</configuration>
3. hdfs-site.xml:指定SecondaryNameNode节点
<configuration>
<property>
<!--指定SecondaryNameNode节点配置-->
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:50090</value>
</property>
<property>
<!--指定 dfs 的副本系数为 3-->
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
4. slave:指定DataNode从节点
#先把localhost删掉
hadoop001
hadoop002
hadoop003
MpReduce集群
1. mapred-env.sh:配置JDK路径
# JDK安装路径
export JAVA_HOME=/usr/local/apps/jdk1.8.0_291
2. mapred-site.xml:指定MapReduce计算框架运行Yarn资源调度框架
<configuration>
<property>
<!--指定 mapreduce 作业运行在 yarn 上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!--历史服务器端地址-->
<name>mapreduce.jobhistory.address</name>
<value>hadoop001:10020</value>
</property>
<property>
<!--历史服务器web端地址-->
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop001:19888</value>
</property>
</configuration>
Yarn集群
1. yarn-env.sh:配置JDK路径
# JDK安装路径
export JAVA_HOME=/usr/local/apps/jdk1.8.0_291
2. yarn-site.xml:指定ResourceManager所在计算机节点
<configuration>
<property>
<!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--resourcemanager 的主机名-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop003</value>
</property>
<property>
<!--开启日志聚集功能-->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!--日志保存时间设置7天-->
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
3. slave:指定NodeManager节点(这步无需操作,前面其实已经配置过了)
#先把localhost删掉
hadoop001
hadoop002
hadoop003
4. 回到hadoop安装目录的上一层,修改用户组
chown -R root:root hadoop-2.9.2/
修改前:
修改后:
分发脚本
前面的配置都是在hadoop001操作的,需要用rsync将上面所有的配置脚本分发给另外两台机器。
rsync -rvl /usr/local/apps/ root@192.168.164.20:/usr/local/apps/
rsync -rvl /usr/local/apps/ root@192.168.164.30:/usr/local/apps/
五、启动Hadoop集群
0. 如果是第一次启动Hadoop集群,需要在NameNode节点格式化NameNode,非第一次不需要执行格式化!!
hadoop namenode -format
启动方式1、一台台启动
1. 在Hadoop001上启动NameNode
hadoop-daemon.sh start namenode
2. 在Hadoop001/Hadoop002/Hadoop003上启动DataNode
hadoop-daemon.sh start datanode
3. 在hadoop003上启动ResourceManager
yarn-daemon.sh start resourcemanager
4. 在hadoop001/hadoop002上启动NodeManager
yarn-daemon.sh start nodemanager
启动方式2、群起
1. 在hadoop001上启动dfs
start-dfs.sh
2. 在hadoop003上启动yarn
start-yarn.sh
验证
启动成功后访问NameNode节点的50070端口
访问Yarn集群ResourceManager的8088端口
六、 测试
测试hdfs
在本地root目录下创建一个test.txt文件,随便输入点什么内容。
在hadoop上创建一个目录
hdfs dfs -mkdir -p /test/input
将test.txt上传到hadoop,在图形界面查看上传情况
hdfs dfs -put /root/test.txt /test/input
将本地root下的test.txt删除
rm -rf test.txt
从hdfs上下载test.txt,测试是否可以下载成功
hdfs dfs -get /test/input/test.txt
测试MapReduce
创建目录,上传文件
hdfs dfs -mkdir -p /wcinput
hdfs dfs -put /root/wc.txt /wcinput
使用hadoop提供的一个示例jar进行wordcount
hadoop jar /usr/local/apps/hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
打印结果
hdfs dfs -cat /wcoutput/part-r-00000
测试日志收集
在浏览器输入192.168.164.10:19888,查看日志收集是否正常
完毕!
以上是关于Hadoop学习笔记二 集群环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
Spark基础学习笔记06:搭建Spark On YARN模式的集群