快速搭建hadoop集群

一:环境搭建

 

1:本地模式

1) 上传安装包 /home/soft 下,上传 hadoop-3.3.1.tar.gz

2) 解压缩 /usr/local

tar -zxf hadoop-3.3.1.tar.gz -C /usr/local

3) 重命名 (非必须的)

进入 /usr/local 文件夹下,进行 mv hadoop-3.3.1 hadoop

4) 修改环境变量 /etc/profile

export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

5) 刷新一下你的环境变量

source /etc/profile

6) 验证是否成功 hadoop version

7) 使用一下,编写一个workcount的案例:词语个数统计

在 /home 路径下
创建一个文件夹  mkdir  input
在input 文件夹中,创建一个a.txt 文件
touch  a.txt
里面随便输入一些单词:
hadoop java bigdata
hello world java bigdata
name hadoop version hello
final shell shell hello

接着开始执行:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount input/* output
执行hadoop中的一个jar包,jar包中有很多程序,我要执行 wordcount  我的数据来源是 input 文件夹下的所有内容
我执行出来的结果放在  output 文件夹下,output文件夹必须不能存在,否则报错。

2、伪分布模式

伪分布模式:它是按照全分布模式进行配置的,但是的的确确只有一台服务器,所以称之为伪分布模式。

一:环境准备工作:
1、安装了jdk
2、安装了hadoop
3、关闭了防火墙
4、免密登录
     自己对自己免密
     ssh-copy-id bigdata01    选择yes  输入密码
     测试免密是否成功:    ssh  bigdata01
5、修改linux的一个安全机制
    vi /etc/selinux/config
    修改里面的 SELINUX=disabled
6、设置host映射

vi /etc/hosts

192.168.xx.100 bigdata01
192.168.xx.101 bigdata02

192.168.xx.101 bigdata03

将来我就可以通过主机名来代替我的IP地址了。

修改了第二台,记得把第一台也改一下,内容一模一样。

伪分布的配置:

1) core-site.xml 在hadoop家目录下的 etc/hadoop 下

<!-- 设置namenode节点 -->
    <!-- 注意: hadoop1.x时代默认端口9000 hadoop2.x时代默认端口8020 hadoop3.x时代默认端口 9820 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata01:9820</value>
    </property>
    
    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>

2)修改 hdfs-site.xml

<property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata01:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata01:9870</value>
    </property>

3、修改hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

# Hadoop3中,需要添加如下配置,设置启动集群角色的用户是谁
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

4、namenode格式化

注意事项:

我们在core-site.xml中配置过hadoop.tmp.dir的路径,在集群格式化的时候需要保证在这个路径不存在!如果之前存在数据,先将其删除,再进行格式化!

hdfs namenode -format

5、启动hdfs

start-dfs.sh

启动如果成功,可以使用jps查看java 进程

如果看到如下进程,说明OK

6、继续查看网站是否可以正常访问:

 7、进行测试

1、准备一些数据
     数据还使用之前的即可
2、将这些数据存放到hdfs平台上
     hdfs dfs -put input  /
     将本地的input文件夹,上传到hdfs平台上的根路径下
3、执行任务
   hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
   此处虽然命令跟之前一模一样,但是数据来源和执行的结果存放的位置已经发生了变化,都在hdfs平台上。
4、查看运行结果
    hdfs dfs -cat /output/*

三:全分布模式

1:准备工作

1. 三台机器的防火墙必须是关闭的.
2. 确保三台机器的网络配置畅通(NAT模式,静态IP,主机名的配置)
3. 确保/etc/hosts文件配置了ip和hostname的映射关系
4. 确保配置了三台机器的免密登陆认证(克隆会更加方便)
5. 确保所有机器时间同步
6. jdk和hadoop的环境变量配置

1)克隆两台新电脑

2)修改IP地址 

vi  /etc/sysconfig/network-scripts/ifcfg-ens33  mac是eth0
修改完重启网络服务:
systemctl restart network
查看ip   
ip  addr

修改主机名 

vi /etc/hostname

修改hosts文件 vi /etc/hosts 然后分发到bigdata01 和 02 上

scp /etc/hosts bigdata02:/etc/
scp /etc/hosts bigdata03:/etc/

2、确保网络畅通并且免密已经做好

ssh  bigdata02
exit
ssh  bigdata03
exit

3、确保jdk以及hadoop安装过了

java -verson
hadoop version

4:全分布式搭建:

配置文件地址: /usr/local/hadoop/etc/hadoop/

修改core-site.xml

<configuration>
    <!-- 设置namenode节点 -->
    <!-- 注意: hadoop1.x时代默认端口9000 hadoop2.x时代默认端口8020 hadoop3.x时代默认端口 9820 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata01:9820</value>
    </property>
    
    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata02:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata01:9870</value>
    </property>
</configuration>

修改hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

# Hadoop3中,需要添加如下配置,设置启动集群角色的用户是谁
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改workers

bigdata01
bigdata02
bigdata03

接着分发到其余两台服务器上。

scp -r /usr/local/hadoop/etc/hadoop  bigdata02:/usr/local/hadoop/etc/
scp -r /usr/local/hadoop/etc/hadoop  bigdata03:/usr/local/hadoop/etc/

接着停止服务:

stop-dfs.sh


删除所有的临时文件  $HADOOP_HOME/tmp
将三台电脑上的  /usr/local/hadoop/tmp全部删除掉,因为里面有namenode和datanode数据,不便于我们格式化
 

rm -rf tmp

格式化namenode, 记得在bigdata01上进行格式化

hdfs namenode -format

启动hdfs

start-dfs.sh

启动完成后:

分别在bigdata01 02 03上,jps查看

hadoop集群至此搭建完毕!!

全分布式环境搭建的问题总结:

1、namenode 重新格式化的时候,需要删除之前的缓存文件 /usr/local/hadoop/tmp
2、没有将配置文件进行分发
3、资源不够用,导致namenode datanode
4、免密忘记做完了   bigdata01 --> 02,03
5、只能启动两台服务器,内存不够了,调整的小一些。
6、防火墙忘记关闭
       systemctl stop firewalld
      
7、终极大招:全部检查一遍,重新进行namenode格式化 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的脚本,可以快速在 CentOS 7 上搭建 Hadoop 集群: ```bash #!/bin/bash # Hadoop Cluster Setup Script # Set hostname echo "Setting hostname..." hostnamectl set-hostname hadoop-master echo "127.0.0.1 hadoop-master" >> /etc/hosts # Install Java echo "Installing Java..." yum install -y java-1.8.0-openjdk-devel # Download Hadoop echo "Downloading Hadoop..." curl -O https://apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz # Extract Hadoop echo "Extracting Hadoop..." tar -xzvf hadoop-3.3.1.tar.gz mv hadoop-3.3.1 /usr/local/hadoop rm hadoop-3.3.1.tar.gz # Configure Hadoop echo "Configuring Hadoop..." echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HADOOP_HOME=/usr/local/hadoop" >> /etc/profile echo "export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin" >> /etc/profile source /etc/profile # Configure Hadoop Cluster echo "Configuring Hadoop Cluster..." cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/core-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/hdfs-site.xml sed -i 's/localhost/hadoop-master/' /usr/local/hadoop/etc/hadoop/yarn-site.xml echo "export HDFS_NAMENODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HDFS_DATANODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export HDFS_SECONDARYNAMENODE_USER=root" >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo "export YARN_RESOURCEMANAGER_USER=root" >> /usr/local/hadoop/etc/hadoop/yarn-env.sh echo "export YARN_NODEMANAGER_USER=root" >> /usr/local/hadoop/etc/hadoop/yarn-env.sh # Start Hadoop Cluster echo "Starting Hadoop Cluster..." /usr/local/hadoop/sbin/start-dfs.sh /usr/local/hadoop/sbin/start-yarn.sh # Configure Hadoop Cluster on other nodes echo "Configure Hadoop Cluster on other nodes..." echo "hadoop-slave1" >> /etc/hosts echo "hadoop-slave2" >> /etc/hosts # Done echo "Hadoop Cluster Setup Complete!" ``` 这个脚本包括了以下步骤: 1. 设置主机名和 hosts 文件。 2. 安装 Java。 3. 下载和解压 Hadoop。 4. 配置 Hadoop。 5. 配置 Hadoop 集群。 6. 启动 Hadoop 集群。 7. 在其他节点上配置 Hadoop 集群。 可以将这个脚本保存为 `setup-hadoop.sh`,并在每个节点上运行它。注意,在运行脚本之前,需要将每个节点的 hostname 和 IP 地址添加到 `/etc/hosts` 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值