栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop学习笔记: 入门(2)

Hadoop学习笔记: 入门(2)

一. SSH无密登录配置

一般情况下, 从一台主机访问另一台未配置过SSH的主机时, 需要输入root账号的密码, 这会在进行集群操作时造成很大的不便. 这时, 便需要对主机进行SSH无密登录配置.

ssh连接另一主机语法:

[atguigu@hadoop102 ~]$ ssh @hostname

免密登录原理

 如下所示, 如果需要从A无密访问B, 则需要在A上对B进行ssh免密配置. 此时, A会生成一对密钥, 分别是公钥和密钥. 公钥会分发给外部主机, 也即B服务器, 用于给外部服务器B对A发送的数据进行加密和解密. 私钥则会保存在A服务器内部, 用于对外部服务器发送的加密数据的解密.

 具体操作方法

 此时, 我们需要从hadoop102无密访问hadoop103, 则我们在hadoop102上进行如下操作:

[atguigu@hadoop102 .ssh]$ cd /home/atguigu/.ssh
[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

系统会生成两个文件, 即公钥(id_rsa.pub)和私钥(id_rsa).

然后, 我们需要将公钥拷贝到需要免密登录的目标机器*上:

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

*注: 此处对hadoop102本机也进行公钥的复制是因为从本机ssh访问本机同样需要输入密码.

.ssh文件夹下的文件功能解释

known_hosts记录ssh访问过本计算机的公钥
id_rsa生成的私钥
id_ras.pub生成的公钥
autorized_keys存放授权过无密登录本服务器的公钥

二. 集群配置

*在本伪分布式服务器的情况下, 一共有hadoop102, hadoop103, hadoop104三台服务器

集群部署规划原则

> NameNode 和 SecondaryNameNode 不能安装在同一台服务器上

> ResourceManager 也很消耗内存, 不要和 NameNode, SecondaryNameNode 配置在同一台机器上

配置方案如下:

hadoop102hadoop103hadoop104
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

Nodemanager

ResourceManager

Nodemanager

NodeManager

配置文件的说明

1) 默认配置文件

需要获取的默认文件文件存放在Hadoop的jar包中的位置
[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

2) 自定义配置文件

core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml 四个自定义配置文件放置在$HADOOP_HOME/etc/hadoop 这个路径上, 用户可以根据需求进行重新修改.

集群的配置

1) 配置core-site.xml





    
    
        fs.defaultFS
        hdfs://hadoop102:8020
    

    
    
        hadoop.tmp.dir
        /opt/module/hadoop-3.1.3/data
    

    
    
        hadoop.http.staticuser.user
        atguigu
    

*hdfs内部通讯地址 - 8020; hdfsweb端访问地址 - 9870

2) 配置hdfs-site.xml





	
	
        dfs.namenode.http-address
        hadoop102:9870
    
	
    
        dfs.namenode.secondary.http-address
        hadoop104:9868
    

 3) 配置yarn-site.xml





    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
    
        yarn.resourcemanager.hostname
        hadoop103
    

    
    
        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    

4) 配置mapred-site.xml





	
    
        mapreduce.framework.name
        yarn
    

在hadoop102上配置完成后, 则需要分发至各个主机

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/

三. 启动集群

配置workers

[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在文件中增加如下内容

hadoop102
hadoop103
hadoop104

*注意: 该文件中不允许内容结尾有空格, 文件中也不允许有空行, 否则会将主机名称识别错误, 或空行也会被识别为主机名称

配置完成后需要同步至集群内各个节点

启动集群

> 若是第一次启动集群, 则需要在hadoop102节点格式化NameNode.

> 格式化NameNode会产生新的集群id, 若此时DataNode仍在运行, 则会导致DataNode的现有集群id和NameNode的集群id不匹配. 因此, 如果需要重新格式化NameNode的话, 一定要先停止NameNode和DataNode进程, 同时删除所有机器上的data, logs目录, 然后再进行格式化.

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs namenode -format

启动HDFS

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

在配置了ResourceManager的hadoop103节点启动YARN

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

此时, 则可以在web端查看HDFS的NameNode和YARN的ResourceManager

HDFS: http://hadoop102:9870

YARN: http://hadoop103:8088

集群基本测试

> 上传文件

[atguigu@hadoop102 ~]$ hadoop fs -mkdir /input
[atguigu@hadoop102 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

*hadoop命令行操作前缀可用"hadoop fs"或"hdfs dfs"皆可.

> hdfs文件存储路径

[atguigu@hadoop102 subdir0]$ pwd /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598-192.168.10.102-1610603650062/current/finalized/subdir0/subdir0

> 下载

第一个参数是需要下载的文件在HDFS上的路径, 第二个参数是下载文件存放的目标路径

[atguigu@hadoop104 software]$ hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./

四. 配置历史服务器

配置mapred-site.xml


    mapreduce.jobhistory.address
    hadoop102:10020




    mapreduce.jobhistory.webapp.address
    hadoop102:19888

*配置完成后同样需要分发配置至各个节点

启动历史服务器

[atguigu@hadoop102 hadoop]$ mapred --daemon start historyserver

JobHistory的web端访问地址: http://hadoop102:19888/jobhistory

五. 集群启动/停止方式总结

1) 各个模块分开启动/停止(常用)

> 整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh

> 整体停止/启动YARN

start-yarn.sh/stop-yarn.sh

2) 各个服务组件逐一启动/停止

分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager

编写Hadoop集群常用脚本

1) 集群启动/停止脚本(包含HDFS, YARN, Historyserver)

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim myhadoop.sh
#!/bin/bash

if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi

case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

编写完成后需要赋予脚本执行权限:

[atguigu@hadoop102 bin]$ chmod +x myhadoop.sh

2) 查看所有服务器进程脚本

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim jpsall
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done

编写完成后同样需要赋予权限

[atguigu@hadoop102 bin]$ chmod +x myhadoop.sh

 六. 常用端口号(重要)

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020/90008020/9000/9820
NameNode HTTP UI500709870
Mapreduce 查看执行任务端口80888088
历史服务器通信端口1988819888
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651992.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号