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
三,启动hadoop
1 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-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
基于docker安装hadoop
必须要掌握的一些docker基础命令:
获取centos镜像
查看镜像
创建容器
1 docker run -itd --privileged --name master master:latest /bin/bash
查看正在运行的容器:
查看所有的容器:
进入容器
1 docker exec -it --privileged master /bin/bash
复制文件至容器
1 2 docker cp /opt/jdk-8u162-linux-x64.tar.gz master:/opt/software
其他操作
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