Hadoop安装竞赛文档
Hadoop安装教程仅供厦门南洋学院的同学参考使用,基于厦门南洋学院实训楼413的环境进行配置,无法保证能够应用到其他场景。
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查看。
1 2 3 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地址,输出一般为这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@master ~] 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
命令可以连接其他节点服务器,连接命令为: 1 2 3 ssh root@192.168.152.81 root@192.168.152.81's password: #显示这个后输入密码 [root@master ~]# 显示这个代表成功连接
小贴士在敲命令的过程中可以使用 TAB
键补全命令哦~ 可以使用方向键的 ↑ ↓ 键切换到上次执行的命令 使用 ssh root@192.168.152.81 "command"
指令即可远程执行 command
指令,前提是配置了密钥连接哦。 Hadoop安装流程 一,配置服务器基本环境需要在本板块将服务器所需模块以及其他配置文件弄好,以便后续的配置
在ubuntu中连接hadoop01,将hadoop01作为master节点进行配置: 1 2 3 4 ssh root@192.168.152.81 root@192.168.152.81's password: #显示这个后输入密码 [root@server-1 ~]# 显示这个代表成功连接
如果无法连接说明IP地址更改了,请自行查看!
设置master主机名称和host文件,便于连接 1 2 3 4 5 6 7 8 9 hostnamectl set-hostname master cat >>"/etc/hosts" <<EOF 192.168.152.81 master 192.168.152.101 slave1 192.168.152.121 slave2 EOF
或者使用 vi /etc/hosts
命令在文件末尾插入如下代码
1 2 3 192.168.152.81 master 192.168.152.101 slave1 192.168.152.121 slave2
生成密钥配置一键免密登录 1 2 3 4 5 6 7 ssh-keygen -t rsa ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2
解压配置jdk以及hadoop 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mkdir /opt/moduletar -xvzf /opt/jdk-8u162-linux-x64.tar.gz -C /opt/module mv /opt/module/jdk1.8.0_162 /opt/module/jdktar -xvzf /opt/hadoop-3.3.0.tar.gz -C /opt/module mv /opt/module/hadoop-3.3.0 /opt/module/hadoop
设置jdk以及hadoop的环境变量 使用 vi /root/.bash_profile
在文件末尾添加如下内容:
1 2 3 4 export JAVA_HOME=/opt/module/jdkexport PATH=$JAVA_HOME /bin:$PATH export HADOOP_HOME=/opt/module/hadoopexport PATH=$PATH :$HADOOP_HOME /bin:$HADOOP_HOME /sbin
配置其他文件节点,执行以下命令: 1 2 3 4 5 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ssh root@slave1 hostnamectl set-hostname slave1 mkdir /opt/modulessh-keygen -t rsa ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ssh root@slave2 hostnamectl set-hostname slave2 mkdir /opt/modulessh-keygen -t rsa ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2
查看安装情况 在
1 2 3 4 5 6 7 8 source /root/.bash_profilejava -version hadoop version
如果都正常输出证明安装成功,如果提示未找到命令则需要排查问题。
二,更改hadoop配置文件一共有6个配置文件需要更改,hadoop-3.3.0版本需要在4个启动/关闭脚本中添加环境参数,更改文件命令为 vi ./文件名
更改 hadoop-env.sh
文件 切换目录到hadoop配置文件目录下
1 cd /opt/module/hadoop/etc/hadoop
使用如下命令更改:
查找文件中 JAVA_HOME
关键词并替换为下方路径
提示:可以使用 ?JAVA_HOME
搜索关键词, N
键是查找下一个,在文件内标注export JAVA_HOME=
的地方进行修改,如果有注释需要删除注释进行修改,修改成下方内容 1 export JAVA_HOME=/opt/module/jdk
更改 core-site.xml
文件 配置文件如下:
1 2 3 4 5 6 7 8 9 10 <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 >
更改 hdfs-site.xml
文件 配置文件如下:
1 2 3 4 5 6 7 8 9 10 <configuration > <property > <name > dfs.replication</name > <value > 3</value > </property > <property > <name > dfs.namenode.secondary.http-address</name > <value > slave1:50090</value > </property > </configuration >
更改 mapred-site.xml
文件 配置文件如下:
1 2 3 4 5 6 <configuration > <property > <name > mapreduce.framework.name</name > <value > yarn</value > </property > </configuration >
注:hadoop-2.7.7中需要先复制配置文件模板再进行配置
1 cp ./mapred-site.xml.template ./mapred-site.xml
更改 yarn-site.xml
文件 配置文件如下:
1 2 3 4 5 6 7 8 9 10 <configuration > <property > <name > yarn.resourcemanager.hostname</name > <value > master</value > </property > <property > <name > yarn.nodemanager.aux-services</name > <value > mapreduce_shuffle</value > </property > </configuration >
更改 workers
文件 在hadoop-2.7.7中该文件名称为 slaves
,hadoop-3.3.0中该文件为workers
记得根据实际情况更改文件名!
配置文件如下:
更改 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的下面)
1 2 3 4 HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
更改 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的下面)
1 2 3 YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
将master节点下的模组文件传输给其他的节点 1 2 scp -r /opt/module slave1:/opt scp -r /opt/module slave2:/opt
三,启动hadoop1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 hdfs namenode -format start-dfs.sh start-yarn.sh jps ssh root@slave1 "source /root/.bash_profile && hostnamectl && jps" ssh root@slave2 "source /root/.bash_profile && hostnamectl && jps"
如果启动失败记得先关闭yarn以及dfs,然后再排查问题
1 2 stop-dfs.sh stop-yarn.sh
问题更改之后记得使用下方命令同步文件!
1 2 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-servicesname yarn.nodemanager.aux-services
value mapreduce_shuffle
workers
文件中需要重点记忆的内容:
*-dfs.sh
文件中需要重点记忆的内容:
HDFS_DATANODE_USER=root
# HDFS_数据节点_用户=rootHADOOP_SECURE_DN_USER=hdfs
# HADOOP_安全_DN_用户=hdfsHDFS_NAMENODE_USER=root
# HDFS_名称节点_用户=rootHDFS_SECONDARYNAMENODE_USER=root
# HDFS_第二名称节点_用户=root*-yarn.sh
文件中需要重点记忆的内容:
YARN_RESOURCEMANAGER_USER=root
# YARN_资源管理_用户=rootHADOOP_SECURE_DN_USER=yarn
# HADOOP_安全_DN_用户=yarnYARN_NODEMANAGER_USER=root
# YARN_节点管理_用户=root 一键安装脚本针对南洋学院内网2022参赛环境编写的一键安装脚本,在master节点执行本脚本可以一键安装hadoop。仅供参考
请不要在学习hadoop搭建的时候使用脚本偷懒!脚本参考是为了辅助理解计算机配置hadoop的流程!学习hadoop搭建的过程无需查看,或仅供参考。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 #! /bin/bash JF=/opt/jdk-8u162-linux-x64.tar.gz HF=/opt/hadoop-3.3.0.tar.gz MP=/opt/module hostnamectl set-hostname master cat >>"/etc/hosts" <<EOF 192.168.152.81 master 192.168.152.101 slave1 192.168.152.121 slave2 EOF ssh-keygen -t rsa ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2 mkdir $MP mkdir $MP /jdktar -xvzf /opt/jdk-8u162-linux-x64.tar.gz -C $MP /jdk --strip-components 1 mkdir $MP /hadooptar -xvzf /opt/hadoop-3.3.0.tar.gz -C $MP /hadoop --strip-components 1 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 source /root/.bash_profilejava -version hadoop version 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/ 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 sed -i '/export JAVA_HOME=/cexport JAVA_HOME=' $MP '/jdk' $MP /hadoop/etc/hadoop/hadoop-env.sh 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 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 cp $MP /hadoop/etc/hadoop/mapred-site.xml.template $MP /hadoop/etc/hadoop/mapred-site.xmlcat > $MP /hadoop/etc/hadoop/mapred-site.xml<<EOF <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> EOF 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 cat > $MP /hadoop/etc/hadoop/slaves<<EOF master slave1 slave2 EOF cat > $MP /hadoop/etc/hadoop/workers<<EOF master slave1 slave2 EOF 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 scp -r $MP slave1:/opt scp -r $MP slave2:/opt 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.shhostnamectl jps ssh root@slave1 "source /root/.bash_profile && hostnamectl && jps" ssh root@slave2 "source /root/.bash_profile && hostnamectl && jps"
其他操作1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 cat >"/etc/hosts" <<EOF EOF cat >>"/etc/hosts" <<EOF EOF sed -i '/StrictHostKeyChecking/cStrictHostKeyChecking no' /etc/ssh/ssh_config rm -rf ~/.ssh/{known_hosts,id_rsa*}mv $MP /hadoop-2.7.7 $MP /hadoopmv $MP /jdk1.8.0_162 $MP /jdkssh 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 scp -r $MP /hadoop/sbin slave1:$MP /hadoop scp -r $MP /hadoop/sbin slave2:$MP /hadoop