Hadoop完全分布式安装

736c76bc103852cd931a19e60cc22cf2.jpg

Hadoop安装

安装需求

本次安装以三个虚拟机为节点,分别安装Java1.8

虚拟机准备

三台虚拟机都创建hadoop用户,虚拟机名分别为hadoop102,hadoop103,hadoop104。

SSH无密码登录

配置ssh

1.生成公钥和私钥

[hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa
#然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2.拷贝公钥到免密码登录的主机

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

同时在Hadoop102 ,hadoop103,hadoop104完成上述操作

  1. 对 .ssh文件夹文件讲解
known_hosts	| 记录ssh访问过计算机的公钥(public key)
id_rsa		| 生成的私钥
id_rsa.pub	| 生成的公钥
authorized_keys	| 存放授权过的无密登录服务器公钥

集群配置

规划

Ø NameNode和SecondaryNameNode不要安装在同一台服务器

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

image.png

配置文件
默认配置文件
要获取的默认文件	文件存放在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
自定义配置文件

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

配置集群
  1. 核心配置文件

配置core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
</configuration>
  1. HDFS配置文件

配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
  1. 配置YARN配置文件

配置yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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_MAPRED_HOME</value>
    </property>
</configuration>
  1. MapReduce配置文件

配置mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>



<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  1. 配置WORKERS

配置workers

填写集群的主机名 该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

hadoop102
hadoop103
hadoop104
  1. 分发文件
scp -r /hadoop3.1.3 root@hadoop103 /opt/model
scp -r /hadoop3.1.3 root@hadoop104 /opt/model

启动集群

(1) 如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

[hadoop@hadoop102 hadoop-3.1.3]$ hdfsnamenode -format

(2)启动HDFS

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

(3)在配置了ResourceManager的节点(hadoop103**)**启动YARN

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

(4)Web端查看HDFS的NameNode

(a)浏览器中输入:[]()

http://hadoop102:9870

(b)查看HDFS上存储的数据信息

(5)Web端查看YARN的ResourceManager

(a)浏览器中输入:

http://hadoop103:8088

(b)查看YARN上运行的Job信息
配置历史节点

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1**)配置mapred-site.xml**

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
  1. 分发文件
  2. 在hadoo102启动历史服务器

mapred --daemon start historyserver

4.查看JobHistory

[http://hadoop102:19888/jobhistory

配置日志的聚集

开启日志聚集功能具体步骤如下:

  1. 配置yarn-site.xml
<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  1. 分发文件
  2. 关闭NodeManager 、ResourceManage和HistoryServer
sbin/stop-yarn.sh
mapred --daemon stop historyserver
  1. 打开NodeManager 、ResourceManage和HistoryServer
start-yarn.sh
mapred --daemon start historyserver
  1. 删除HDFS上已经存在的输出文件
hadoop fs -rm -r /output
  1. 执行WordCount程序
hadoop-3.1.3]$wordcount /input /output
  1. 查看日志
    (1)历史服务器地址http://hadoop102:19888/jobhistory
当遇到 "Permission denied" 错误,特别是基于Hadoop完全分布式部署中,这通常是由于权限设置不正确或者SSH密钥对验证未启用导致的。以下是解决这个问题的步骤: 1. **检查用户身份**:确认当前使用的用户名是否有足够的权限登录到Hadoop集群的节点上。如果是root用户,需要切换到Hadoop用户(如`hadoop`),因为Hadoop通常会运行在非-root环境中。 2. **配置SSH**: - 确保Hadoop集群中的每个节点都已正确添加彼此的公钥到`~/.ssh/authorized_keys`文件中。如果没有,你需要手动复制并追加,或使用`ssh-copy-id`命令自动完成。 - 配置`sshd_config`文件,在Hadoop节点上,确保 `PasswordAuthentication` 设置为 `no`,因为密码认证不安全,推荐使用密钥对。 3. **修改Hadoop配置**: - 在Hadoop的`core-site.xml` 或者 `hdfs-site.xml` 中查找`<property>`标签下的`hadoop.security.authentication`属性,将其值设为`kerberos`或`password`,具体取决于你的环境。如果使用的是Kerberos,则需要进一步配置KDC(Key Distribution Center)。 4. **启动服务**:重启Hadoop的服务,比如 `service hadoop-hdfs restart` 和 `service hadoop-yarn restart` 或 `service hbase restart`,具体看你的Hadoop组件。 5. **测试连接**:尝试从其他节点通过SSH连接到有问题的节点,看看是否解决了问题。如果仍然报错,查看日志文件(如 `/var/log/hadoop/*logs`)获取更多诊断信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值