下载安装包

Hadoop

Linux环境部署

创建账户

添加用户名和密码

  1. [root@iZnm201imn18dkgebcpx40Z ~]# useradd hadoop
  2. [root@iZnm201imn18dkgebcpx40Z ~]# passwd hadoop
  3. Changing password for user hadoop.
  4. New password:
  5. Retype new password:
  6. passwd: all authentication tokens updated successfully.
  7. A&UAqqGqk55M9hPnvhL0EK

配置hadoop用户具有root权限,方便后期加sudo执行root权限的命令

  1. [root@iZnm201imn18dkgebcpx40Z ~]# vim /etc/sudoers

修改/etc/sudoers文件,在%wheel下添加一行,hadoop ALL=(ALL) NOPASSWD:ALL

  1. ## Allow root to run any commands anywhere
  2. root ALL=(ALL) ALL
  3. ## Allows people in group wheel to run all commands
  4. %wheel ALL=(ALL) ALL
  5. hadoop ALL=(ALL) NOPASSWD:ALL

注意:hadoop这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了hadoop具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以hadoop要放到%wheel这行下面。

创建/opt/module、/opt/software文件夹,并修改文件所有者和所属组为hadoop用户

  1. [root@iZnm201imn18dkgebcpx40Z ~]# mkdir /opt/module
  2. [root@iZnm201imn18dkgebcpx40Z ~]# mkdir /opt/software
  3. [root@iZnm201imn18dkgebcpx40Z ~]# chown hadoop:hadoop /opt/module
  4. [root@iZnm201imn18dkgebcpx40Z ~]# chown hadoop:hadoop /opt/software/

安装Java环境

卸载自带JDK(如果有的话)

  1. [root@iZnm201imn18dkgebcpx40Z ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
  2. rpm: 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

  1. <a name="JqePL"></a>
  2. ### 配置JDK环境变量
  3. 1. 新建/etc/profile.d/my_env.sh文件
  4. ```bash
  5. sudo vim /etc/profile.d/my_env.sh
  6. #JAVA_HOME
  7. export JAVA_HOME=/opt/module/jdk1.8.0
  8. export PATH=$PATH:$JAVA_HOME/bin
  1. 使环境变量生效

    1. source /etc/profile.d/my_env.sh
  2. 测试 java -version

    1. [hadoop@iZnm201imn18dkgebcpx40Z module]# java -version
    2. java version "1.8.0_152"
    3. Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
    4. Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

    安装Hadoop

    下载并解压

    1. # 下载
    2. [hadoop@iZnm201imn18dkgebcpx40Z ~]# cd /opt/software
    3. [hadoop@iZnm201imn18dkgebcpx40Z software]# wget https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
    4. # 解压到/opt/module文件夹
    5. [hadoop@iZnm201imn18dkgebcpx40Z software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module

    配置Hadoop环境变量

  3. 在/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

  1. 2. 使环境变量生效
  2. ```bash
  3. source /etc/profile.d/my_env.sh

Hadoop单机部署配置

伪分布式部署

  1. 配置核心文件core-site.xml ```bash [hadoop@iZnm201imn18dkgebcpx40Z hadoop]$ cd $HADOOP_HOME/etc/hadoop [hadoop@iZnm201imn18dkgebcpx40Z hadoop]$ vim core-site.xml
fs.defaultFS hdfs://localhost:8020 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data hadoop.http.staticuser.user hadoop hadoop.proxyuser.hadoop.hosts hadoop.proxyuser.hadoop.groups hadoop.proxyuser.hadoop.users *

2. 配置HDFS文件hdsf-site.xml
```bash
vim hdsf-site.xml
# 添加如下信息
<configuration>
      <!-- 测试环境指定HDFS副本的数量1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  1. 初始化namenode

    [hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ pwd
    /opt/module/hadoop-3.1.3
    [hadoop@iZnm201imn18dkgebcpx40Z hadoop-3.1.3]$ bin/hdfs namenode -format
    
  2. 启动

    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]$
    
  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文件