云服务器搭建Hadoop集群

583 阅读2分钟

这是我参与8月更文挑战的第6天,活动详情查看:   8月更文挑战

一.准备工作

1.实验环境介绍

Ubuntu20.04
JDK:JDK 1.8.0_261
Hadoop:hadoop-2.8.1
MobaXterm

2.安装软件及搭建环境

2.1 下载安装配置JDK
  • 四台机器可同步进行.手动下载JDK,解压到指定目录
#  查看当前Java版本
$ java -version

# 更新最新的软件包信息
sudo apt-get update


# 创建目录(/root/apps)
$ mkdir /root/apps  

# 解压到指定目录(-C)
$ tar -zxvf jdk-8u261-linux-x64.tar.gz -C /root/apps/

# 将解压后的文件夹重命名
$ mv jdk1.8.0_261  jdk

# 设置环境变量(修改profile的好处是对所有用户都有效)
$ vim /etc/profile

# 进入之后在文件末尾追加以下内容
 export JAVA_HOME=/root/apps/jdk
 export PATH=$PATH:$JAVA_HOME/bin
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 export JRE_HOME=/root/apps/jdk/jre
# 使环境变量即刻生效
$ source /etc/profile

# 通过查看java版本,检查JDK安装是否成功
$ java -version
2.2 下载安装Hadoop
  • 四台机器可同步进行
# 手动下载Hadoop或者
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz

# 解压到指定文件(-C)
$ tar -zxvf hadoop-2.8.1.tar.gz -C /root/apps/

# 查看文件是否完整
ll /root/apps/hadoop-2.8.1
bin:可执行程序的目录
etc:配置文件的目录
sbin:脚本文件的目录
share:提供编程用的jar包

# 设置环境变量
$ vim /etc/profile

# 进入之后在文件末尾追加如下内容:
export HADOOP_HOME=/root/apps/hadoop-2.8.1
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"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

# 使环境变量生效
$ source /etc/profile

3.其他配置

3.1 网络规划
本文规划搭建4太机器组成集群模式,机器分配:
Master :namenode 管理集群
slave1:secondarynamenode提供计算资源,执行计算任务
slave2:datanode
slave3:datanode
3.2 设置IP和主机的映射
  • 修改/etc/hosts,添加IP绑定,并注释掉127.0.1.1(不注释会影响Hadoop集群)
# 127.0.1.1  ld
  • 设置IP和主机的映射,这样直接写主机名就可以找到对应的IP IP名 主机名
$ vim /etc/hosts
172.31.32.212   master
172.31.32.211   slave1
172.31.32.210   slave2
172.31.32.209   slave3

4.配置SSH

4.1 安装SSH
$ sudo apt-get install ssh
4.2 SSH设置
  • 修改/etc/ssh/sshd_config文件,将以下三项开启yes状态
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
  • 重启SSH服务
$ service ssh restart
  • 这样root用户就可以直接登录,以及为后续SSH免密登录做准备
4.3 配置SSH
# 在A机器生成公钥:
$ ssh-keygen -t rsa #一直回车
# 进入到当前用户的隐藏目录(.ssh)
$ cd ~/.ssh
# 把公钥复制一份,并改名为authorized_keys
$ cp id_rsa.pub authorized_keys
# 这步执行完后,在当前机器执行ssh localhost就可以免密登录本机了,如果本机装有ssh-copy-id 命令,就可以把公钥发给其他机器,这样A机器就可以免密登录其他机器:
$ ssh-copy-id 要免密登录的机器 #输入yes和密码

二. Hadoop部署

5.修改Hadoop配置文件

进入/root/apps/hadoop-2.8.1/etc/hadoop/

5.1 修改hadoop-env.sh文件
  • hadoop-env.sh:Hadoop运行用到的环境变量配置文件
$ vim hadoop-env.sh
 export JAVA_HOME=/root/apps/jdk(JDK安装目录)
5.2 修改core-site.xml文件
  • core-site.xml:Hadoop core的配置项,例如HDFS,MapReduce和yarn常用的I/O配置
  • 创建目录:mkdir /root/apps/data
$ vim core-site.xml
<configuration>
        <property>
                <!-- 指定默认文件系统为HDFS,指定NameNode所在的机器 -->
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
</configuration>
5.3 修改yarn-site.xml文件
  • yarn-site.xml:守护进程的配置项,包括资源管理,web应用代理服务器和节点管理器
$ vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
	<property>
		<!-- 指定ResourceManager所在的机器 -->
		<name>yarn.resourcemanager.hostname</name>
		<value>master</value>
	</property>
	<property>
		<!--NomeNodeManager获取数据的方式是shuffle-->
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
    <property>
		<!--指定NomeNodeManage内存大小-->                			<name>yarn.nodemanager.resource.memory-mb</name>
         <value>2048</value>
    </property>

	<property>
		<!--指定NomeNodeManage的CPU核数-->           
		<name>yarn.nodemanager.resource.cpu-vcores</name>
		<value>2</value>
	</property>
</configuration>
5.4 修改mapred-site.xml文件
  • mapred-site.xml:MapReduce守护进程的配置项,包括作业历史服务器
  • 进入到/root/apps/hadoop-2.8.1/etc/hadoop/
$ cp mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
<configuration>
	<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>
5.5 修改hdfs-site.xml文件
  • hdfs-site.xml:HDFS守护进程服务器,包括namenode,辅助namenode和datanode等
$ vim hdfs-site.xml
<configuration>
	<property>
		<!-- 指定NameNode软件存储元数据的本地目录 -->
		<name>dfs.namenode.name.dir</name>
		<value>/root/apps/data/name/</value>
	</property>
	<property>
		<!-- 指定DataNode软件存放文件块的本地目录 -->
		<name>dfs.datanode.data.dir</name>
		<value>/root/apps/data/data</value>
	</property>
	<property>
		<!-- 指定SecondaryNameNode节点为Machine-02 -->
		<name>dfs.namenode.secondary.http-address</name>
		<value>slave1:50090</value>
	</property>
</configuration>
5.6 修改slaves文件
添加集群节点(多机添加多个)
$ vim slaves
slave1
slave2
slave3

6.复制配置好的文件到其他机器

  • 在第一台机器(master)上配置测试好后成功启动后,将配置文件等复制到其他机器上,复制这些文件要注意自己的安装路径、版本、机器名等。
6.1 复制配置文件
  • 进入到配置文件的位置
for i in {1..3}; do scp /etc/profile slave$i:$PWD;done
6.2 复制安装包
  • 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致
for i in {1..3}; do scp -r /root/apps/hadoop-2.8.1/ slave$i:/root/apps/; done

7.检查安装是否成功

7.1 格式化HDFS
  • 首次启动HDFS需要先初始化namenode和datanode的存储目录
# 在namenode机器上执行
$ hadoop namenode -format

# 在Datanode机器上执行
$ hadoop datanode -format
7.2 在namenode机器上启动HDFS(master)
/root/apps/hadoop-2.8.1/sbin/start-dfs.sh
7.3 在ResourceManager机器上启动Yarn(master)
 /root/apps/hadoop-2.8.1/sbin/start-yarn.sh
 mr-jobhistory-daemon.sh start historyserver
7.4 用jps命令分别查看
在namenode机器上执行:jps
在datanode机器上执行:jps
7.5 在windows浏览器查看
7.6 关闭HDFS,Yarn
/root/apps/hadoop-2.8.1/sbin/stop-dfs.sh
/root/apps/hadoop-2.8.1/sbin/stop-yarn.sh