IMC全新升级合集站,成千上万款游戏在线玩,更多功能敬请期待! 该站点正处于测试中,如果有任何问题欢迎反馈

hadoop安装竞赛文档

目录

Hadoop安装教程

仅供厦门南洋学院的同学参考使用,基于厦门南洋学院实训楼413的环境进行配置,无法保证能够应用到其他场景。

  • 编纂时间:2023.10.11
  • 编纂作者:夏五郎

Linux入门教程

在linux下安装hadoop必须要会的几个基本操作:

  • cd 目录 # 切换目录的命令 使用 cd 命令可以切换目录,比如 cd $MP 就是打开$MP 目录。 其中在目录前添加 ./module或不加任何标记 module 表示当前目录,添加 ../module 表示上级目录 ,/module 表示从根目录 / 开始的绝对路径目录。

  • vi 文件目录 # 在命令行中使用编辑器的命令 使用 vi 命令可以在shell中编辑文件,比如 vi /etc/hosts 就是编辑/etc/hosts文件。 文件目录的标注方法和cd同样,不存在的文件会直接新建,请注意! 使用方向键移动光标,点击 i 键,最下方显示 INSERT 后进入编辑模式 点击 Esc 键,然后输入 :wq可以保存文件并退出,其中q表示退出,w表示保存

  • tar # 解压文件的命令 使用tar命令可以压缩/解压文件,hadoop配置中只用到了解压文件,这里给出解压文件的示例命令,其他参数请自行tar --help 或者bing查看。

    tar -xvzf 压缩目录文件 -C 解压到的目录
    # 例子:
    tar -xvzf /opt/jdk-8u162-linux-x64.tar.gz -C $MP
    

    其中 /opt/jdk-8u162-linux-x64.tar.gz 是压缩文件所在文件路径,$MP 是要解压到的文件目录

  • ip #命令 使用 ip a 命令可以查看服务器的IP地址,输出一般为这样:

  [root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:56:e9:74 brd ff:ff:ff:ff:ff:ff
    inet 192.168.152.81/24 brd 192.168.152.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::6a9a:2e8:734b:def2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

其中 192.168.152.81就是该服务器的ip地址,要学会去看其他节点服务器的ip地址,以便连接操作。

  • ssh #连接服务器命令 使用 ssh 命令可以连接其他节点服务器,连接命令为:
ssh root@192.168.152.81 #root是连接用户名,192.168.152.81是要连接的服务器ip地址。
root@192.168.152.81's password: #显示这个后输入密码
[root@master ~]# 显示这个代表成功连接

小贴士

  • 在敲命令的过程中可以使用 TAB 键补全命令哦~
  • 可以使用方向键的 ↑ ↓ 键切换到上次执行的命令
  • 使用 ssh root@192.168.152.81 "command" 指令即可远程执行 command 指令,前提是配置了密钥连接哦。

Hadoop安装流程

一,配置服务器基本环境

需要在本板块将服务器所需模块以及其他配置文件弄好,以便后续的配置

  1. 在ubuntu中连接hadoop01,将hadoop01作为master节点进行配置:
  ssh root@192.168.152.81 
  #打开终端,输入上述命令进行连接,root是连接用户名,192.168.152.81是要连接的服务器ip地址。
  root@192.168.152.81's password: #显示这个后输入密码
  [root@server-1 ~]# 显示这个代表成功连接

如果无法连接说明IP地址更改了,请自行查看!

  1. 设置master主机名称和host文件,便于连接
# 设置主机名
hostnamectl set-hostname master

# 在/etc/hosts文件里插入master和其他节点的ip和域名id
cat>>"/etc/hosts"<<EOF
192.168.152.81 master
192.168.152.101 slave1
192.168.152.121 slave2
EOF

或者使用 vi /etc/hosts 命令在文件末尾插入如下代码

192.168.152.81 master
192.168.152.101 slave1
192.168.152.121 slave2
  1. 生成密钥配置一键免密登录
# 生成密钥,回车三次即可
ssh-keygen -t rsa

# 将密钥复制给其他的节点便于一键连接,先输入 yes ,再输入节点密码 123456
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
  1. 解压配置jdk以及hadoop
# 新建目录 /opt/module 用于放置所有需要的模组文件
mkdir /opt/module

# 解压jdk文件,文件路径为/opt/jdk-8u162-linux-x64.tar.gz,如有变更自行更改
tar -xvzf /opt/jdk-8u162-linux-x64.tar.gz -C /opt/module

# 将jdk目录重命名,方便后续配置
mv /opt/module/jdk1.8.0_162 /opt/module/jdk

# 解压hadoop文件,文件路径为tar -xvzf /opt/hadoop-3.3.0.tar.gz,学校自带镜像没有该版本,该版本为2023参赛所用版本,需要手动上传。
tar -xvzf /opt/hadoop-3.3.0.tar.gz -C /opt/module

# 将hadoop目录重命名,方便后续配置
mv /opt/module/hadoop-3.3.0 /opt/module/hadoop
  1. 设置jdk以及hadoop的环境变量

使用 vi /root/.bash_profile 在文件末尾添加如下内容:

export JAVA_HOME=/opt/module/jdk
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  1. 配置其他文件节点,执行以下命令:
# 传输hosts以及.root_profile 配置文件到其他的节点上
scp -r /etc/hosts slave1:/etc
scp -r /etc/hosts slave2:/etc
scp -r /root/.root_profile slave1:/etc
scp -r /root/.bash_profile slave2:/root
  • 打开新的终端页面执行以下指令,配置slave1。
# 连接服务器ssh
ssh root@slave1

# 设置主机名
hostnamectl set-hostname slave1

# 创建文件夹
mkdir /opt/module

# 生成密钥,回车三次即可
ssh-keygen -t rsa

# 将密钥复制给其他的节点便于一键连接,先输入 yes ,再输入节点密码 123456
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
  • 配置slave2,打开新的终端页面执行以下指令
# 连接服务器ssh
ssh root@slave2

# 设置主机名
hostnamectl set-hostname slave2

# 创建文件夹
mkdir /opt/module

# 生成密钥,回车三次即可
ssh-keygen -t rsa

# 将密钥复制给其他的节点便于一键连接,先输入 yes ,再输入节点密码 123456
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
  1. 查看安装情况

# 刷新文件使变量生效
source /root/.bash_profile

# 查看Java安装情况和版本
java -version

# 查看hadoop安装情况和版本
hadoop version

如果都正常输出证明安装成功,如果提示未找到命令则需要排查问题。

二,更改hadoop配置文件

一共有6个配置文件需要更改,hadoop-3.3.0版本需要在4个启动/关闭脚本中添加环境参数,更改文件命令为 vi ./文件名

  1. 更改 hadoop-env.sh文件

切换目录到hadoop配置文件目录下

cd /opt/module/hadoop/etc/hadoop

使用如下命令更改:

vi ./hadoop-env.sh

查找文件中 JAVA_HOME 关键词并替换为下方路径

  • 提示:可以使用 ?JAVA_HOME 搜索关键词, N 键是查找下一个,在文件内标注export JAVA_HOME= 的地方进行修改,如果有注释需要删除注释进行修改,修改成下方内容
export JAVA_HOME=/opt/module/jdk
  1. 更改 core-site.xml 文件

配置文件如下:

<configuration>
     <property>
         <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
     </property>
      <property>
         <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop/tmp</value>
     </property>
</configuration>
  1. 更改 hdfs-site.xml 文件

配置文件如下:

<configuration>
    <property>
         <name>dfs.replication</name>
            <value>3</value>
     </property>
     <property>
         <name>dfs.namenode.secondary.http-address</name>
            <value>slave1:50090</value>
     </property>
</configuration>
  1. 更改 mapred-site.xml 文件

配置文件如下:

<configuration>
    <property>
         <name>mapreduce.framework.name</name>
            <value>yarn</value>
     </property>
</configuration>

注:hadoop-2.7.7中需要先复制配置文件模板再进行配置

cp ./mapred-site.xml.template ./mapred-site.xml
  1. 更改 yarn-site.xml 文件

配置文件如下:

<configuration>
     <property>
         <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
     </property>
       <property>
         <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
     </property>
</configuration>
  1. 更改 workers 文件

在hadoop-2.7.7中该文件名称为 slaves ,hadoop-3.3.0中该文件为workers 记得根据实际情况更改文件名!

配置文件如下:

master
slave1
slave2
  1. 更改 start-dfs.sh 以及 stop-dfs.sh 中的启动变量

使用 vi /opt/module/hadoop/sbin/start-dfs.sh 以及 vi /opt/module/hadoop/sbin/stop-dfs.sh 指令分别更改,在 文件开头第二行插入如下代码!(#!/usr/bin/env的下面)

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
  1. 更改 start-yarn.sh 以及 stop-yarn.sh 中的启动变量

使用 vi /opt/module/hadoop/sbin/start-yarn.sh 以及 vi /opt/module/hadoop/sbin/stop-yarn.sh 指令分别更改,在 文件开头第二行插入如下代码!(#!/usr/bin/env的下面)

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  1. 将master节点下的模组文件传输给其他的节点
scp -r /opt/module slave1:/opt
scp -r /opt/module slave2:/opt

三,启动hadoop


# hdfs初始化
hdfs namenode -format

# 启动dfs
start-dfs.sh

# 启动yarn
start-yarn.sh

# 检查启动情况
jps

# 检查其他节点启动情况
ssh root@slave1 "source /root/.bash_profile && hostnamectl && jps"
ssh root@slave2 "source /root/.bash_profile && hostnamectl && jps"

如果启动失败记得先关闭yarn以及dfs,然后再排查问题

stop-dfs.sh
stop-yarn.sh

问题更改之后记得使用下方命令同步文件!

scp -r /opt/module slave1:/opt
scp -r /opt/module slave2:/opt

四,配置文件记忆

注意:比赛时所有的配置文件都需要背过!!! 为了方便背诵,我将所有需要背的配置文件内容拆解开来,助于理解记忆。

理解记忆:

  • xml文件中配置框架英文含义:

    • configuartion:配置
    • property:属性
    • name:名称
    • value:值
  • hadoop-env.sh 文件中需要重点记忆的内容:

    • export JAVA_HOME Java配置路径
  • core-site.xml 文件中需要重点记忆的内容:

    • property hadoop默认主节点的名称
      • name fs.defaultFS
      • value hdfs://master:9000
    • property hadoop缓存目录路径值
      • name hadoop.tmp.dir
      • value /opt/module/hadoop/tmp
  • hdfs-site.xml 文件中需要重点记忆的内容:

    • property hadoop分布式节点数量名称
      • name dfs.replication
      • value 3
    • property hadoop namenode第二节点http地址
      • name dfs.namenode.secondary.http-address
      • value slave1:50090
  • mapred-site.xml 文件中需要重点记忆的内容:

    • property mapreduce framework 名称
      • name mapreduce.framework.name
      • value yarn
  • yarn-site.xml 文件中需要重点记忆的内容:

    • property yarn资源管理主机名称
      • name yarn.resourcemanager.hostname
      • value master
    • property yarn节点管理 aux-services
      • name yarn.nodemanager.aux-services
      • value mapreduce_shuffle
  • workers 文件中需要重点记忆的内容:

    • 所有节点的主机名称
  • *-dfs.sh 文件中需要重点记忆的内容:

    • HDFS_DATANODE_USER=root # HDFS_数据节点_用户=root
    • HADOOP_SECURE_DN_USER=hdfs # HADOOP_安全_DN_用户=hdfs
    • HDFS_NAMENODE_USER=root # HDFS_名称节点_用户=root
    • HDFS_SECONDARYNAMENODE_USER=root # HDFS_第二名称节点_用户=root
  • *-yarn.sh 文件中需要重点记忆的内容:

    • YARN_RESOURCEMANAGER_USER=root # YARN_资源管理_用户=root
    • HADOOP_SECURE_DN_USER=yarn # HADOOP_安全_DN_用户=yarn
    • YARN_NODEMANAGER_USER=root # YARN_节点管理_用户=root

一键安装脚本

针对南洋学院内网2022参赛环境编写的一键安装脚本,在master节点执行本脚本可以一键安装hadoop。仅供参考

请不要在学习hadoop搭建的时候使用脚本偷懒!脚本参考是为了辅助理解计算机配置hadoop的流程!学习hadoop搭建的过程无需查看,或仅供参考。

#! /bin/bash

### FIRST 第一板块

# echo "set PATH" 设置脚本执行环境变量,文件位置,模组路径等

JF=/opt/jdk-8u162-linux-x64.tar.gz
HF=/opt/hadoop-3.3.0.tar.gz
MP=/opt/module

# echo "set host 设置主机名以及配置host文件" 
hostnamectl set-hostname master

cat>>"/etc/hosts"<<EOF
192.168.152.81 master
192.168.152.101 slave1
192.168.152.121 slave2
EOF

# echo "set ssh key 配置ssh key进行自动连接" 

ssh-keygen -t rsa # -n '' -f  ~/.ssh/id_rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

# echo "set java && hadoop" 解压配置jdk以及hadoop

mkdir $MP
mkdir $MP/jdk
tar -xvzf /opt/jdk-8u162-linux-x64.tar.gz -C $MP/jdk --strip-components 1

mkdir $MP/hadoop
tar -xvzf /opt/hadoop-3.3.0.tar.gz -C $MP/hadoop --strip-components 1

# echo "set PATH 设置jdk以及hadoop的环境变量" 

cat>>"/root/.bash_profile"<<EOF
export JAVA_HOME=$MP/jdk
export PATH=\$JAVA_HOME/bin:\$PATH
export HADOOP_HOME=$MP/hadoop
export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin
EOF


# echo "check install 查看安装情况"

source /root/.bash_profile
java -version
hadoop version

# echo "set slave 设置其他slave节点的主机配置文件" 

scp -r /root/.bash_profile slave1:/root/
scp -r /root/.bash_profile slave2:/root/
scp -r /etc/hosts slave1:/etc/
scp -r /etc/hosts slave2:/etc/

# echo "set ssh slave ssh连接设置其他节点"
  
ssh root@slave1 <<EOF
hostnamectl set-hostname slave1
mkdir $MP

ssh-keygen -t rsa -n '' -f  ~/.ssh/id_rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
EOF

ssh root@slave2 <<EOF
hostnamectl set-hostname slave2
mkdir $MP

ssh-keygen -t rsa -n '' -f  ~/.ssh/id_rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
EOF

### SECOND 第二板块

# hadoop settings file 设置hadoop配置文件

# 替换 hadoop-env.sh 中的JAVA_HOME PATH文件
sed -i '/export JAVA_HOME=/cexport JAVA_HOME='$MP'/jdk' $MP/hadoop/etc/hadoop/hadoop-env.sh

# 配置 core-site.xml 文件
cat > $MP/hadoop/etc/hadoop/core-site.xml <<EOF
<configuration>
     <property>
         <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
     </property>
      <property>
         <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop/tmp</value>
     </property>
</configuration>
EOF

# 配置 hdfs-site.xml 文件
cat > $MP/hadoop/etc/hadoop/hdfs-site.xml <<EOF
<configuration>
    <property>
         <name>dfs.replication</name>
            <value>3</value>
     </property>
     <property>
         <name>dfs.namenode.secondary.http-address</name>
            <value>slave1:50090</value>
     </property>
</configuration>
EOF

# 配置 mapred-site.xml 文件
cp $MP/hadoop/etc/hadoop/mapred-site.xml.template $MP/hadoop/etc/hadoop/mapred-site.xml
cat > $MP/hadoop/etc/hadoop/mapred-site.xml<<EOF
<configuration>
    <property>
         <name>mapreduce.framework.name</name>
            <value>yarn</value>
     </property>
</configuration>
EOF

# 配置 yarn-site.xml 文件
cat > $MP/hadoop/etc/hadoop/yarn-site.xml<<EOF
<configuration>
<!-- Site specific YARN configuration properties -->
     <property>
         <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
     </property>
       <property>
         <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
     </property>
</configuration>
EOF

# 配置 slaves 文件 hadoop-2.7.7
cat > $MP/hadoop/etc/hadoop/slaves<<EOF
master
slave1
slave2
EOF

# 配置workers wenjian hadoop-3.3.0
cat > $MP/hadoop/etc/hadoop/workers<<EOF
master
slave1
slave2
EOF

# hadoop-3.3.0 need to add PATH for start&stop shell hadoop-3.3.0需要添加PATH变量到启动/关闭脚本中

sed -i "2i HDFS_DATANODE_USER=root" $MP/hadoop/sbin/start-dfs.sh
sed -i "2i HADOOP_SECURE_DN_USER=hdfs" $MP/hadoop/sbin/start-dfs.sh
sed -i "2i HDFS_NAMENODE_USER=root" $MP/hadoop/sbin/start-dfs.sh
sed -i "2i HDFS_SECONDARYNAMENODE_USER=root" $MP/hadoop/sbin/start-dfs.sh

sed -i "2i HDFS_DATANODE_USER=root" $MP/hadoop/sbin/stop-dfs.sh
sed -i "2i HADOOP_SECURE_DN_USER=hdfs" $MP/hadoop/sbin/stop-dfs.sh
sed -i "2i HDFS_NAMENODE_USER=root" $MP/hadoop/sbin/stop-dfs.sh
sed -i "2i HDFS_SECONDARYNAMENODE_USER=root" $MP/hadoop/sbin/stop-dfs.sh

sed -i "2i YARN_RESOURCEMANAGER_USER=root" $MP/hadoop/sbin/start-yarn.sh
sed -i "2i HADOOP_SECURE_DN_USER=yarn" $MP/hadoop/sbin/start-yarn.sh
sed -i "2i YARN_NODEMANAGER_USER=root" $MP/hadoop/sbin/start-yarn.sh

sed -i "2i YARN_RESOURCEMANAGER_USER=root" $MP/hadoop/sbin/stop-yarn.sh
sed -i "2i HADOOP_SECURE_DN_USER=yarn" $MP/hadoop/sbin/stop-yarn.sh
sed -i "2i YARN_NODEMANAGER_USER=root" $MP/hadoop/sbin/stop-yarn.sh

### THIRD 第三板块

# trasnfer module 将配置好的模组路径下的所有文件传输到其他节点
scp -r $MP slave1:/opt
scp -r $MP slave2:/opt

# check hadoop start 启动hadoop
hdfs namenode -format
$MP/hadoop/sbin/stop-dfs.sh
$MP/hadoop/sbin/stop-yarn.sh
$MP/hadoop/sbin/start-dfs.sh
$MP/hadoop/sbin/start-yarn.sh

# 检查启动情况
hostnamectl
jps

ssh root@slave1 "source /root/.bash_profile && hostnamectl && jps"
ssh root@slave2 "source /root/.bash_profile && hostnamectl && jps"

其他操作

# 覆盖文件
cat>"/etc/hosts"<<EOF 
EOF

# 在文件末尾添加

cat>>"/etc/hosts"<<EOF
EOF

# 自动ssh配置
sed -i '/StrictHostKeyChecking/cStrictHostKeyChecking no' /etc/ssh/ssh_config
rm -rf ~/.ssh/{known_hosts,id_rsa*}

# tar末尾添加参数--strip-components 1 可以去掉最外层的目录

# 目录更改重命名
mv $MP/hadoop-2.7.7 $MP/hadoop
mv $MP/jdk1.8.0_162 $MP/jdk

ssh root@slave1 "source /root/.bash_profile"
ssh root@slave2 > /dev/null 2>&1 <<EOF

# JAVA_HOME路径直接添加
echo "export JAVA_HOME=$MP/jdk" >> $MP/hadoop/etc/hadoop/hadoop-env.sh

# 传输hadoop的配置文件所在目录
scp -r $MP/hadoop/etc/hadoop slave1:$MP/hadoop/etc
scp -r $MP/hadoop/etc/hadoop slave2:$MP/hadoop/etc

# dfs启动脚本添加参数,不能直接使用,需要添加到文件头
cat >> $MP/hadoop/sbin/start-dfs.sh<<EOF

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

EOF

cat >> $MP/hadoop/sbin/stop-dfs.sh<<EOF

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

EOF

cat >> $MP/hadoop/sbin/start-yarn.sh<<EOF

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

EOF

cat >> $MP/hadoop/sbin/stop-yarn.sh<<EOF

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

EOF

# 传输hadoop启动脚本文件
scp -r $MP/hadoop/sbin slave1:$MP/hadoop
scp -r $MP/hadoop/sbin slave2:$MP/hadoop
标签 :
comments powered by Disqus

相关内容

感谢你的赞助!

最近看群里闲聊,不知怎么的忽然让我想起来一件事,就是疫情期间(3月份~8月份)几乎每个月都有一个陌生人通过二维码扫码的方式给我打钱,基本每次都是50块钱。我在微信账单查询的时候只能查到转账人是一 …

更多

MCBE 88音平均律

前言 今天修IMC Geyser的时候看到冲田在烷MC,随便试了试Xbox联机没想到进去了)然后冲田似乎在研究playsound的调音,我才知道原来MCBE的playsound命令还有微分音的用法(红 …

更多

中慧1+X证书题库

所属院校:厦门南洋职业学院 Python程序开发模拟卷(中级1120) 单选题 每小题2分,共60 分 1 提高Selenium脚本的执行速度描述中错误的是( )。 A:使用更高配置的电脑和选择更快的 …

更多