搭建Hadoop2.9伪分布集群环境
Posted qq759035366
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建Hadoop2.9伪分布集群环境相关的知识,希望对你有一定的参考价值。
搭建Hadoop2.9伪分布集群环境
自己创建一个普通用户,用普通用户登录或者用root登录也可以的,具体根据公司的要求来
systemctl stop firewalld
systemctl disable firewalld
useradd hadoop1 #我创建的用户是hadoop
passwd hadoop1 #这里输入用户hadoop的密码,连续输入2次
cat >> /etc/hosts << EOF
192.168.243.190 hadoop1
EOF
su - hadoop1 #替换到hadoop下开始安装
ssh-keygen -t rsa #命令生成密钥对,一路回车就可以了
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 700 ~/.ssh/ && chmod 600 ~/.ssh/*
1.JDK安装与配置
[hadoop@hadoop1 ~]$ cd /home/hadoop/
[hadoop@hadoop1 ~]$ mkdir app/
[hadoop@hadoop1 app]$ cd app/
[hadoop@hadoop1 app]$ pwd #jdk和hadoop上传到此目录
/home/hadoop/app
[hadoop@hadoop1 app]$ ls
hadoop-2.9.2.tar.gz jdk-8u141-linux-x64.tar.gz
[hadoop@hadoop1 app]$ tar -zxvf jdk-8u141-linux-x64.tar.gz
[hadoop@hadoop1 app]$ ln -s jdk1.8.0_141 jdk
[hadoop@hadoop1 app]$ ls
hadoop-2.9.2.tar.gz jdk jdk1.8.0_141 jdk-8u141-linux-x64.tar.gz
[hadoop@hadoop1 app]$ cat >> ~/.bashrc << EOF
JAVA_HOME=/home/hadoop/app/jdk
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
EOF
[hadoop@hadoop1 app]$ source ~/.bashrc
[hadoop@hadoop1 app]$ echo $JAVA_HOME
/home/hadoop/app/jdk
[hadoop@hadoop1 app]$ java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[hadoop@hadoop1 app]$
2.Hadoop的安装与配置
2.1上传和解压Hadoop
[hadoop@hadoop1 app]$ pwd #把hadoop安装包上传到这里,我已经在上一步上传了
/home/hadoop/app
[hadoop@hadoop1 app]$ ls
hadoop-2.9.2.tar.gz jdk jdk1.8.0_141 jdk-8u141-linux-x64.tar.gz
[hadoop@hadoop1 app]$ tar -zxvf hadoop-2.9.2.tar.gz
[hadoop@hadoop1 app]$ ln -s hadoop-2.9.2 hadoop
[hadoop@hadoop1 app]$ ls
hadoop hadoop-2.9.2 hadoop-2.9.2.tar.gz jdk jdk1.8.0_141 jdk-8u141-linux-x64.tar.gz
[hadoop@hadoop1 app]$
2.2配置Hadoop
在hadoop安装目录下进入到etc/hadoop目录,修改Hadoop相关配置文件。
1)修改core-site.xml配置文件。
core-site.xml文件主要配置Hadoop的公有属性,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ cd /home/hadoop/app/hadoop/etc/hadoop
[hadoop@hadoop1 hadoop]$ vi core-site.xml #<configuration>中间添加如下的信息</configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
<!--配置hdfs NameNode的地址,9000是RPC通信的端口-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/tmp</value>
<!--hadoop的临时目录-->
</property>
2)修改hdfs-site.xml 配置文件。
hdfs-site.xml文件主要配置跟HDFS相关的属性,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ vi hdfs-site.xml #<configuration>中间添加如下的信息</configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/dfs/name</value>
<!--配置namenode节点存储fsimage的目录位置-->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dfs/data</value>
<!--配置datanode节点存储block的目录位置-->
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<!--配置hdfs副本数量-->
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<!--关闭hdfs的权限检查-->
</property>
3)修改hadoop-env.sh配置文件。
hadoop-env.sh文件主要配置跟hadoop环境相关的变量,这里主要修改JAVA_HOME的安装目录,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ vi hadoop-env.sh #修改里面的这个环境路径
export JAVA_HOME=/home/hadoop/app/jdk
4)修改mapred-site.xml配置文件。
mapred-site.xml 文件主要配置跟MapReduce 相关的属性,这里主要将MapReduce的运行框架名称配置为YARN,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@hadoop1 hadoop]$ vi mapred-site.xml #<configuration>中间添加如下的信息</configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<!--指定运行mapreduce的环境为YARN-->
</property>
5)修改 yarn-site.xml配置文件。
yarn-site.xml文件主要配置跟YARN 相关的属性,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ vi yarn-site.xml #<configuration>中间添加如下的信息</configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<!--配置NodeManager执行MR任务的方式为Shuffle混洗-->
</property>
6)修改slaves配置文件。
slaves文件主要配置哪些节点为datanode角色,由于目前搭建的是Hadoop伪分布集群,所以只需要填写当前主机的hostname即可,具体配置内容如下所示。
[hadoop@hadoop1 hadoop]$ vi slaves #修改为你服务器的hostname,不能有回车等
hadoop
7)配置Hadoop环境变量。
在hadoop用户下,添加Hadoop环境变量,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ vi ~/.bashrc #添加如下信息
export HADOOP_HOME=/home/hadoop/app/hadoop
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
[hadoop@hadoop1 hadoop]$ source ~/.bashrc
[hadoop@hadoop1 hadoop]$ hadoop version
Hadoop 2.9.2
8)创建Hadoop相关数据目录。
在hadoop用户下,创建Hadoop相关数据目录,具体操作如下所示。
mkdir -p /home/hadoop/data/tmp
mkdir -p /home/hadoop/data/dfs/name
mkdir -p /home/hadoop/data/dfs/data
2.3启动Hadoop伪分布集群
(1)格式化主节点namenode
在Hadoop安装目录下,使用如下命令对NameNode进行格式化。
[hadoop@hadoop1 hadoop]$ /home/hadoop/app/hadoop
[hadoop@hadoop1 hadoop]$ bin/hdfs namenode -format
注意:第一次安装Hadoop集群需要对NameNode进行格式化,Hadoop集群安装成功之后,下次只需要使用脚本start-all.sh一键启动Hadoop集群即可。
(2)启动Hadoop伪分布集群
在Hadoop安装目录下,使用脚本一键启动Hadoop集群,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ sbin/start-all.sh
(3)查看Hadoop服务进程
通过jps命令查看Hadoop伪分布集群的服务进程,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ jps
[hadoop@hadoop1 hadoop]$ jps
55412 Jps
53815 SecondaryNameNode
53627 DataNode
53979 ResourceManager
54571 NameNode
54285 NodeManager
[hadoop@hadoop1 hadoop]$
如果服务进程中包含Resourcemanager、Nodemanager、NameNode、DataNode和SecondaryNameNode等5个进程,这就说明Hadoop伪分布集群启动成功。
(4)查看HDFS文件系统
在浏览器中输入http://192.168.243.190:50070/地址,通过web界面查看HDFS文件系统,具体操作图下图所示:
(5)查看YARN资源管理系统
在浏览器中输入http://192.168.243.190:8088/地址,通过web界面查看YARN资源管理系统,具体操作如下图所示。
2.4测试运行Hadoop伪分布集群
Hadoop伪分布集群启动之后,我们以Hadoop自带的WordCount案例来检测Hadoop集群环境的可用性。
(1)查看HDFS目录
在HDFS shell中,使用ls命令查看HDFS文件系统目录,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ bin/hdfs dfs -ls /
由于是第一次使用HDFS文件系统,所以HDFS中目前没有任何目录和文件。
(2)创建HDFS目录
在HDFS shell中,使用mkdir命令创建HDFS文件目录/test,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ bin/hdfs dfs -mkdir /test
(3)准备测试数据集
在Hadoop根目录下,新建words.log文件并输入测试数据,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ vi words.log
hadoop hadoop hadoop
spark spark spark
flink flink flink
(4)测试数据上传至HDFS
使用put命令将words.log文件上传至HDFS的/test目录下,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ bin/hdfs dfs -put words.log /test
(5)运行WordCount案例
使用yarn脚本将Hadoop自带的WordCount程序提交到YARN集群运行,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /test/words.log /test/out
(6)查看作业运行状态
在浏览器中输入http://192.168.243.190:8088/地址,通过web界面查看YARN中作业运行状态,具体操作如图下图所示。
如果在YARN 集群的Web界面中,查看到WordCount作业最终的运行状态为SUCCESS,就说明MapReduce程序可以在YARN集群上成功运行。
(7)查询作业运行结果
使用cat命令查看WordCount作业输出结果,具体操作如下所示。
[hadoop@hadoop1 hadoop]$ bin/hdfs dfs -cat /test/out/*
flink 3
hadoop 3
spark 3
如果WordCount运行结果符合预期值,说明Hadoop伪分布式集群已经搭建成功!
搭建Hadoop伪分布式集群
版本与环境
- 虚拟机:VMware Workstation Pro 15
- Linux镜像:Ubuntu-18.04.2-live-server-amd64.iso
- Java版本:jdk-8u231-linux-x64.tar.gz
- Hadoop版本:version-3.1.3
准备
- (PS:以下配置需在克隆slave之前完成)
- 安装Ubuntu(PS:记得安装OpenSSH)
- 解压hadoop和jdk:
tar -zxvf xxx.tar.gz
- 移动hadoop根目录:
mv hadoop-3.1.3 /usr/local/hadoop3
- 移动jdk根目录:
mv jdk-1.8.0_231 /usr/local/jdk1.8
添加环境变量
- 执行以下命令将环境变量写入
.bashrc
# cd ~
# vim .bashrc
- java variables
export JAVA_HOME=/usr/local/jdk1.8/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
- hadoop variables
export HADOOP_HOME=/usr/local/hadoop3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
- 保存环境变量
# source .bashrc
配置Hadoop
- 进入目录:
cd /usr/local/hadoop3/etc/hadoop
- 配置文件hadoop-env.sh
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop3/tmp</value>
<description>文件临时存储目录</description>
</property>
<property>
<name>fs.defaultFS</name>
<!-- 1.x name>fs.default.name</name -->
<value>hdfs://master:9000</value>
<description>hdfs namenode访问地址</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>102400</value>
<description>文件块大小</description>
</property>
- 配置文件hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50080</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>文件块的副本数</description>
</property> </property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop3/hdfs/name</value>
<description>namenode目录</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop3/hdfs/data</value>
<description>datanode目录</description>
</property>
- 配置文件mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop3</value>
</property>
- 配置文件yarn-site.xml
<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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
克隆节点
- 完成以上配置后,便可以此为模板克隆多个节点
- 博主以两个slave节点为例
配置主机名与IP
- 分别修改主机名为:
master
、slave1
、slave2
# hostnamectl set-hostname xxx
- 若有
/etc/cloud/cloud.cfg
文件,则修改preserve_hostname
为true
- 分别修改静态IP:
192.168.127.134
、192.168.127.135
、192.168.127.136
# vim /etc/netplan/50-cloud-init.yaml
- 使IP配置生效:
# netplan apply
- 修改每个节点的静态DNS解析,例如:
# vim /etc/hosts
192.168.127.134 master
192.168.127.135 slave1
192.168.127.136 slave2
设置节点间免密登录
- master、slave1、slave2中输入:
ssh-keygen -t rsa -P ""
- 在master中将slave1、slave2的配置合成keys
# cd ~/.ssh
# scp -P 22 slave1:~/.ssh/id_rsa.pub id_rsa.pub1
# scp -P 22 slave2:~/.ssh/id_rsa.pub id_rsa.pub2
# cat id_rsa.pub >> authorized_keys
# cat id_rsa.pub1 >> authorized_keys
# cat id_rsa.pub2 >> authorized_keys
- 将配置传给slave1、slave2
# scp -P 22 authorized_keys slave1:~/.ssh/
# scp -P 22 authorized_keys slave2:~/.ssh/
配置脚本文件
- 配置master节点即可
- 进入存放指令的目录:
cd /usr/local/hadoop3/sbin
- 修改
start-dfs.sh
、stop-dfs.sh
:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
- 修改
start-yarn.sh
、stop-yarn.sh
:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
启动并验证
- 启动集群:
# /usr/local/hadoop3/sbin/start-all.sh
- 显示当前所有java进程:
jps
- 登录
master:8088
、master:9870
查看hadoop自带的web服务
运行测试用例
- 进入目录:
/usr/local/hadoop3
- 在HDFS中创建文件夹:
# hdfs dfs -mkdir -p /data/input
- 将任一txt文件放入:
# hdfs dfs -put README.txt /data/input
- 执行mapreduce测试用例:
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /data/input /data/output/result
- 查看结果:
# hdfs dfs -cat /data/output/result/part-r-00000
以上是关于搭建Hadoop2.9伪分布集群环境的主要内容,如果未能解决你的问题,请参考以下文章
Kafka:ZK+Kafka+Spark Streaming集群环境搭建针对hadoop2.9.0启动DataManager失败问题