下载安装包
Hadoop
- 官方地址:http://archive.apache.org/dist/hadoop/
国内镜像(推荐):https://repo.huaweicloud.com/apache/hadoop/common/
Java
Linux环境部署
创建账户
添加用户名和密码
[root@iZnm201imn18dkgebcpx40Z ~]# useradd hadoop[root@iZnm201imn18dkgebcpx40Z ~]# passwd hadoopChanging password for user hadoop.New password:Retype new password:passwd: all authentication tokens updated successfully.A&UAqqGqk55M9hPnvhL0EK
配置hadoop用户具有root权限,方便后期加sudo执行root权限的命令
[root@iZnm201imn18dkgebcpx40Z ~]# vim /etc/sudoers
修改/etc/sudoers文件,在%wheel下添加一行,hadoop ALL=(ALL) NOPASSWD:ALL
## Allow root to run any commands anywhereroot ALL=(ALL) ALL## Allows people in group wheel to run all commands%wheel ALL=(ALL) ALLhadoop ALL=(ALL) NOPASSWD:ALL
注意:hadoop这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了hadoop具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以hadoop要放到%wheel这行下面。
创建/opt/module、/opt/software文件夹,并修改文件所有者和所属组为hadoop用户
[root@iZnm201imn18dkgebcpx40Z ~]# mkdir /opt/module[root@iZnm201imn18dkgebcpx40Z ~]# mkdir /opt/software[root@iZnm201imn18dkgebcpx40Z ~]# chown hadoop:hadoop /opt/module[root@iZnm201imn18dkgebcpx40Z ~]# chown hadoop:hadoop /opt/software/
安装Java环境
卸载自带JDK(如果有的话)
[root@iZnm201imn18dkgebcpx40Z ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodepsrpm: no packages given for erase
- rpm -qa:查询所安装的所有rpm软件包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e –nodeps:强制卸载软件
安装JDK
```bash下载
[root@iZnm201imn18dkgebcpx40Z ~]# cd /opt/software切换到hadoop用户
[root@iZnm201imn18dkgebcpx40Z software]# su hadoop
[hadoop@iZnm201imn18dkgebcpx40Z software]# wget https://repo.huaweicloud.com/java/jdk/8u152-b16/jdk-8u152-linux-x64.tar.gz
解压到/opt/module文件夹
[hadoop@iZnm201imn18dkgebcpx40Z software]# tar -zxvf jdk-8u152-linux-x64.tar.gz -C /opt/module
<a name="JqePL"></a>### 配置JDK环境变量1. 新建/etc/profile.d/my_env.sh文件```bashsudo vim /etc/profile.d/my_env.sh#JAVA_HOMEexport JAVA_HOME=/opt/module/jdk1.8.0export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
source /etc/profile.d/my_env.sh
测试 java -version
[hadoop@iZnm201imn18dkgebcpx40Z module]# java -versionjava version "1.8.0_152"Java(TM) SE Runtime Environment (build 1.8.0_152-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
安装Hadoop
下载并解压
# 下载[hadoop@iZnm201imn18dkgebcpx40Z ~]# cd /opt/software[hadoop@iZnm201imn18dkgebcpx40Z software]# wget https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz# 解压到/opt/module文件夹[hadoop@iZnm201imn18dkgebcpx40Z software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
配置Hadoop环境变量
在/etc/profile.d/my_env.sh文件中添加 ```bash vim /etc/profile.d/my_env.sh
HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
2. 使环境变量生效```bashsource /etc/profile.d/my_env.sh
Hadoop单机部署配置
伪分布式部署
- 配置核心文件core-site.xml ```bash [hadoop@iZnm201imn18dkgebcpx40Z hadoop]$ cd $HADOOP_HOME/etc/hadoop [hadoop@iZnm201imn18dkgebcpx40Z hadoop]$ vim core-site.xml
2. 配置HDFS文件hdsf-site.xml
```bash
vim hdsf-site.xml
# 添加如下信息
<configuration>
<!-- 测试环境指定HDFS副本的数量1 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
初始化namenode
[hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ pwd /opt/module/hadoop-3.1.3 [hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ bin/hdfs namenode -format启动
sbin/start-dfs.sh启动报错了,提示意思是没有免密登录ssh localhost的权限:
[hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ sbin/start-dfs.sh Starting namenodes on [iZnm201imn18dkgebcpx40Z] iZnm201imn18dkgebcpx40Z: Warning: Permanently added 'iznm201imn18dkgebcpx40z,10.10.178.233' (ECDSA) to the list of known hosts. iZnm201imn18dkgebcpx40Z: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). Starting datanodes localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). Starting secondary namenodes [iZnm201imn18dkgebcpx40Z] iZnm201imn18dkgebcpx40Z: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). [hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ jps 28245 Jps设置免密登录后,再次执行命令sbin/start-dfs.sh
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys测试是否启动,jps
[hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ jps 29441 DataNode 33993 Jps 29773 SecondaryNameNode 29279 NameNode [hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$配置MapReduce job on YARN
配置mapreduce由YARN vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
启动yarn
sbin/start-yarn.sh
集群重启
# 1.先关闭yarn
sbin/stop-yarn.sh
# 2.关闭dfs
sbin/stop-dfs.sh
# 3.重新启动dfs
sbin/star-dfs.sh
# 4.重启yarn
sbin/star-yarn.sh
附录:Hadoop的启动和停止说明
sbin/start-all.sh #启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/stop-all.sh #停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/start-dfs.sh #启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode
sbin/stop-dfs.sh #停止Hadoop HDFS守护进程NameNode、SecondaryNameNode和DataNode
sbin/hadoop-daemons.sh start namenode #单独启动NameNode守护进程
sbin/hadoop-daemons.sh stop namenode #单独停止NameNode守护进程
sbin/hadoop-daemons.sh start datanode #单独启动DataNode守护进程
sbin/hadoop-daemons.sh stop datanode #单独停止DataNode守护进程
sbin/hadoop-daemons.sh start secondarynamenode #单独启动SecondaryNameNode守护进程
sbin/hadoop-daemons.sh stop secondarynamenode #单独停止SecondaryNameNode守护进程
sbin/start-yarn.sh #启动ResourceManager、NodeManager
sbin/stop-yarn.sh #停止ResourceManager、NodeManager
sbin/yarn-daemon.sh start resourcemanager #单独启动ResourceManager
sbin/yarn-daemons.sh start nodemanager #单独启动NodeManager
sbin/yarn-daemon.sh stop resourcemanager #单独停止ResourceManager
sbin/yarn-daemons.sh stopnodemanager #单独停止NodeManager
sbin/mr-jobhistory-daemon.sh start historyserver #手动启动jobhistory
sbin/mr-jobhistory-daemon.sh stop historyserver #手动停止jobhistory
大数据技术之Hadoop(入门)
版本:V3.0
第1章 Hadoop运行环境搭建
1.1 模板虚拟机环境准备
0)安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存4G、硬盘50G
1)hadoop100虚拟机配置要求如下(本文Linux系统全部以CentOS-7.5-x86-1804为例)
(1)使用yum安装需要虚拟机可以正常上网,yum安装前可以先测试下虚拟机联网情况
[root@hadoop100 ~]# ping www.baidu.com
PING www.baidu.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=8.60 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=7.72 ms
(2)安装epel-release
注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)
[root@hadoop100 ~]# yum install -y epel-release
(3)注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作
net-tool:工具包集合,包含ifconfig等命令
[root@hadoop100 ~]# yum install -y net-tools
vim:编辑器
[root@hadoop100 ~]# yum install -y vim
2)关闭防火墙,关闭防火墙开机自启
[root@hadoop100 ~]# systemctl stop firewalld
[root@hadoop100 ~]# systemctl disable firewalld.service
注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙
3)创建atguigu用户,并修改atguigu用户的密码
[root@hadoop100 ~]# useradd atguigu
[root@hadoop100 ~]# passwd atguigu
4)配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令
[root@hadoop100 ~]# vim /etc/sudoers
修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
Allow root to run any commands anywhere
root ALL=(ALL) ALL
Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
注意:atguigu这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了atguigu具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以atguigu要放到%wheel这行下面。
5)在/opt目录下创建文件夹,并修改所属主和所属组
(1)在/opt目录下创建module、software文件夹
[root@hadoop100 ~]# mkdir /opt/module
[root@hadoop100 ~]# mkdir /opt/software
(2)修改module、software文件夹的所有者和所属组均为atguigu用户
[root@hadoop100 ~]# chown atguigu:atguigu /opt/module
[root@hadoop100 ~]# chown atguigu:atguigu /opt/software
(3)查看module、software文件夹的所有者和所属组
[root@hadoop100 ~]# cd /opt/
[root@hadoop100 opt]# ll
总用量 12
drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 module
drwxr-xr-x. 2 root root 4096 9月 7 2017 rh
drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 software
6)卸载虚拟机自带的JDK
注意:如果你的虚拟机是最小化安装不需要执行这一步。
[root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e —nodeps
rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e –nodeps:强制卸载软件
7)重启虚拟机
[root@hadoop100 ~]# reboot
1.2 克隆虚拟机
1)利用模板机hadoop100,克隆三台虚拟机:hadoop102、hadoop103、hadoop104
注意:克隆时,要先关闭hadoop100
2)修改克隆机IP,以下以hadoop102举例说明
(1)修改克隆虚拟机的静态IP
[root@hadoop100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME=”ens33”
IPADDR=192.168.10.102
PREFIX=24
GATEWAY=192.168.10.2
DNS1=192.168.10.2
(2)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
(3)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
(4)保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
3)修改克隆机主机名,以下以hadoop102举例说明
(1)修改主机名称
[root@hadoop100 ~]# vim /etc/hostname
hadoop102
(2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
[root@hadoop100 ~]# vim /etc/hosts
添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
4)重启克隆机hadoop102
[root@hadoop100 ~]# reboot
5)修改windows的主机映射文件(hosts文件)
(1)如果操作系统是window7,可以直接修改
①进入C:\Windows\System32\drivers\etc路径
②打开hosts文件并添加如下内容,然后保存
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
(2)如果操作系统是window10,先拷贝出来,修改保存以后,再覆盖即可
①进入C:\Windows\System32\drivers\etc路径
②拷贝hosts文件到桌面
③打开桌面hosts文件并添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
④将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件
