大数据hadoop配置

链接:https://www.jianshu.com/p/0d4a365ef350

第一部分:Linux环境安装
Hadoop是运行在Linux,虽然借助工具也可以运行在Windows上,但是建议还是运行在Linux系统上,第一部分介绍Linux环境的安装、配置、Java JDK安装等。

第二部分:Hadoop本地模式安装
Hadoop 本地模式只是用于本地开发调试,或者快速安装体验 Hadoop,这部分做简单的介绍。

第三部分:Hadoop伪分布式模式安装
学习 Hadoop 一般是在伪分布式模式下进行。这种模式是在一台机器上各个进程上运行 Hadoop 的各个模块,伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是只是运行在一个操作系统上的,并不是真正的分布式。

第四部分:完全分布式安装
完全分布式模式才是生产环境采用的模式,Hadoop 运行在服务器集群上,生产环境一般都会做HA,以实现高可用。

第五部分:Hadoop HA安装
HA是指高可用,为了解决Hadoop单点故障问题,生产环境一般都做HA部署。这部分介绍了如何配置Hadoop2.x的高可用,并简单介绍了HA的工作原理。

第一部分 :Linux环境安装

1. 服务器规划

hostname ip name
bigdata-senior01 192.168.0.101 CentOSSerer01
bigdata-senior02 192.168.0.102 CentOSSerer02
bigdata-senior03 192.168.0.103 CentOSMYsqlDB_master

2. 环境配置

一、修改 Hostname
  1. 临时修改 hostname

[root@localhost Desktop]# hostname bigdata-senior01.chybinmy.com
这种修改方式,系统重启后就会失效。

  1. 永久修改 hostname

想永久修改,应该修改配置文件 /etc/sysconfig/network。

命令:[root@bigdata-senior01 ~] vim /etc/sysconfig/network
打开文件后,

NETWORKING=yes  #使用网络
HOSTNAME=bigdata-senior01.chybinmy.com  #设置主机名
二、配置Host
命令:[root@bigdata-senior01 ~] vim /etc/hosts
添加hosts: 192.168.0.101 bigdata-senior01
三、关闭防火墙
四、关闭selinux

selinux是Linux一个子安全机制,学习环境可以将它禁用。
sudo vim /etc/sysconfig/selinux

五、安装JDK
  • 删除centos自带的openjdk

[wj@master hadoop]$ rpm -qa | grep java
java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64

[root@master ~]# rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
[root@master ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
[root@master ~]# rpm -e --nodeps tzdata-java-2018e-3.el7.noarch
[root@master ~]# rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64

安装参考https://www.jianshu.com/p/a30b42bbfc09

第二部分:Hadoop安装

一、 Hadoop 所用的用户设置

1. 创建一个名字为 hadoop 的普通用户

image

2. 给 hadoop 用户 sudo 权限

image

设置权限,学习环境可以将 hadoop 用户的权限设置的大一些,但是生产环境一定要注意普通用户的权限限制。

image

注意:如果root用户无权修改sudoers文件,先手动为root用户添加写权限。

image

3. 切换到hadoop用户

[root@bigdata-senior01 ~]# su - hadoop[hadoop@bigdata-senior01 ~]$

4. 创建存放hadoop文件的目录

image
  1. 将hadoop文件夹的所有者指定为hadoop用户

如果存放hadoop的目录的所有者不是hadoop,之后hadoop运行中可能会有权限问题,那么就讲所有者改为hadoop。

image

二、

解压Hadoop目录文件

1. 复制 hadoop-2.5.0.tar.gz 到/opt/modules目录下。

  1. 解压 hadoop-2.5.0.tar.gz
image

十五、配置 Hadoop

1. 配置 Hadoop 环境变量

image

追加配置:

export HADOOP_HOME="/opt/modules/hadoop-2.10.0"
export PATH=$HADDOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

执行:source /etc/profile 使得配置生效

验证 HADOOP_HOME 参数:

image
  1. 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh 文件的 JAVA_HOME参数
image

3. 配置 core-site.xml

image

[hadoop@bigdata-senior01 ~]{HADOOP_HOME}/etc/hadoop/core-site.xml


  
        fs.defaultFS
        hdfs://bigdata-senior01:8020
  
  
        hadoop.tmp.dir
        /opt/data/tmp
  

(1) fs.defaultFS 参数配置的是HDFS的地址。

image

(2) hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。

默认的hadoop.tmp.dir/tmp/hadoop-${user.name},此时有个问题就是 NameNode 会将 HDFS 的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空 /tmp 目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

  • 创建临时目录:
image
  • 将临时目录的所有者修改为 hadoop
image
  • 修改 hadoop.tmp.dir
image

十六、配置、格式化、启动 HDFS

1. 配置 hdfs-site.xml


        
                dfs.replication
                1
        
        
                dfs.namenode.http-address
                bigdata-senior01:9000
        


dfs.replication 配置的是 HDFS存 储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。

2. 格式化 HDFS

image
image

格式化是对 HDFS 这个分布式文件系统中的 DataNode 进行分块,统计所有分块后的初始元数据的存储在 NameNode 中。

格式化后,查看 core-site.xml 里 hadoop.tmp.dir(本例是 /opt/data 目录)指定的目录下是否有了 dfs 目录,如果有,说明格式化成功。

注意:

  1. 格式化时,这里注意 hadoop.tmp.dir 目录的权限问题,应该 hadoop 普通用户有读写权限才行,可以将 /opt/data 的所有者改为 hadoop。
    [hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo chown -R hadoop:hadoop /opt/data

  2. 查看 NameNode 格式化后的目录。

image

fsimage 是 NameNode 元数据在内存满了后,持久化保存到的文件。

fsimage*.md5 是校验文件,用于校验 fsimage 的完整性。

seen_txid 是 hadoop 的版本

vession 文件里保存:

  • namespaceID:NameNode 的唯一 ID。

  • clusterID:集群 ID,NameNode 和 DataNode 的集群 ID 应该一致,表明是一个集群。

image

3. 启动 NameNode

image
image

4. 启动 DataNode

image

5. 启动 SecondaryNameNode

image
  1. JPS 命令查看是否已经启动成功,有结果就是启动成功了。
image

7. HDFS 上测试创建目录、上传、下载文件

HDFS 上创建目录

image

上传本地文件到 HDFS 上

image

读取 HDFS 上的文件内容

image
image

从 HDFS上 下载文件到本地

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -get /demo1/core-site.xml

image

十七、配置、启动YARN

1. 配置mapred-site.xml

默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。

image

添加配置如下:

指定 mapreduce 运行在 yarn 框架上。


        
                mapreduce.framwork.name
                yarn
        

2. 配置 yarn-site.xml

添加配置如下:

        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        
        
                yarn.resourcemanager.hostname
                bigdata-senior01
        

  • yarn.nodemanager.aux-services 配置了 yarn 的默认混洗方式,选择为 mapreduce 的默认混洗算法。

  • yarn.resourcemanager.hostname 指定了 Resourcemanager 运行在哪个节点上。

3. 启动 Resourcemanager

image
image

4. 启动 nodemanager

image
image

5. 查看是否启动成功

image

可以看到 ResourceManager、NodeManager 已经启动成功了。

image

6. YARN 的 Web 页面

YARN 的 Web 客户端端口号是 8088,通过 http://192.168.100.10:8088/ 可以查看。

image

八、运行 MapReduce Job

在 Hadoop 的 share 目录里,自带了一些 jar 包,里面带有一些 mapreduce 实例小例子,位置在 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的 WordCount 实例。

1. 创建测试用的 Input 文件

创建输入目录:
./bin/hdfs dfs -mkdir -p /wordcountdemo/input

创建原始文件:

在本地 /opt/data 目录创建一个文件 wc.input,内容如下。

hadoop mapreduce hive
hbase spark hadoop
hive spart

将 wc.input 文件上传到 HDFS 的 /wordcountdemo/input 目录中:
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -put /opt/data/wc.input /wordcountdemo/input

2. 运行 WordCount MapReduce Job
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /wordcountdemo/input /wordcountdemo/output

image
image
  1. 查看输出结果目录
    ./bin/hdfs dfs -ls /wordcountdemo/output
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -ls /wordcountdemo/output1
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2020-06-17 15:47 /wordcountdemo/output1/_SUCCESS
-rw-r--r--   1 hadoop supergroup         52 2020-06-17 15:47 /wordcountdemo/output1/part-r-00000
  • output 目录中有两个文件,_SUCCESS 文件是空文件,有这个文件说明Job执行成功。

  • part-r-00000文件是结果文件,其中-r-说明这个文件是 Reduce 阶段产生的结果,mapreduce 程序执行时,可以没有 reduce 阶段,但是肯定会有 map 阶段,如果没有 reduce 阶段这个地方有是-m-。

  • 一个 reduce 会产生一个 part-r- 开头的文件。

  • 查看输出文件内容。

[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -cat /wordcountdemo/output/part-r-00000
hadoop  2
hbase   1
hive    2
mapreduce   1
spark   1
spart   1

结果是按照键值排好序的。
十九、停止 Hadoop

image

二十、 Hadoop 各个功能模块的理解

  1. HDFS模块

HDFS 负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS 是个相对独立的模块,可以为 YARN 提供服务,也可以为 HBase 等其他模块提供服务。

  1. YARN 模块

YARN 是一个通用的资源协同和任务调度框架,是为了解决 Hadoop1.x 中MapReduce 里 NameNode 负载太大和其他问题而创建的一个框架。

YARN 是个通用框架,不止可以运行 MapReduce,还可以运行Spark、Storm等其他计算框架。

  1. MapReduce 模块

MapReduce 是一个计算框架,它给出了一种数据处理的方式,即通过 Map 阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。

第七步 开启历史服务

二十一、历史服务介绍

Hadoop 开启历史服务可以在 web 页面上查看 Yarn 上执行 job 情况的详细信息。可以通过历史服务器查看已经运行完的 Mapreduce 作业记录,比如用了多少个 Map、用了多少个 Reduce、作业提交时间、作业启动时间、作业完成时间等信息。

二十二、开启历史服务

image

开启后,可以通过 Web 页面查看历史服务器:

http://bigdata-senior01.chybinmy.com:19888/

二十三、Web 查看 job 执行历史

1. 运行一个 mapreduce 任务

image
  1. job 执行中
image

3. 查看 job 历史

image

历史服务器的 Web 端口默认是19888,可以查看Web界面。

但是在上面所显示的某一个 Job 任务页面的最下面,Map 和 Reduce 个数的链接上,点击进入 Map 的详细信息页面,再查看某一个 Map 或者 Reduce 的详细日志是看不到的,是因为没有开启日志聚集服务。
二十四、开启日志聚集

4. 日志聚集介绍

MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集。

  1. 开启日志聚集

配置日志聚集功能:

Hadoop 默认是不启用日志聚集的。在 yarn-site.xml 文件里配置启用日志聚集。

image

yarn.log-aggregation-enable:是否启用日志聚集功能。

yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。

将配置文件分发到其他节点:

image

重启 Yarn 进程:

image

重启 HistoryServer 进程:

image

6. 测试日志聚集

运行一个 demo MapReduce,使之产生日志:

image

查看日志:

运行 Job 后,就可以在历史服务器 Web 页面查看各个 Map 和 Reduce 的日志了。

分布式安装

你可能感兴趣的:(大数据hadoop配置)