大数据框架-Hadoop安装(一主一从)

Hadoop安装(一主一从)

操作环境介绍:

操作系统环境:centos7.6 腾讯云服务器主机(两台都是)

操作平台:宝塔界面

Hadoop版本:3.2.3

image-20220414124326576

JDK版本:1.8.0_291

关闭宝塔防火墙,腾讯云控制台修改安全组,配置自己需要的ip,否则可能会有注入病毒的风险

教程正式开始

主机名配置

查看主从服务器各自的主机名

hostname

建议将主服务器修改为master

从服务器主机名修改为slave (多服务器的话后面可以加上数字区分)

sudo hostnamectl set-hostname [yourname]

image-20220414125214593

image-20220414125235735

具体主机名因人而异,不做强制要求

host文件配置

配置主服务器host文件:

vim /etc/hosts

host文件修改为:

127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4

::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

然后在底部新增:

由于腾讯云服务器缘故,映射本机需要映射内网ip,在控制台获取或者使用ifconfig获取

master主机内网ip    master主机名
从节点公网ip           slave主机名

从节点同步配置,但是需要将master主机ip改为公网ip,slave主机ip改为内网ip

示例:

master:

image-20220414125757455

slave:

image-20220414125859584

ssh免密登录配置

需要开启宝塔ssh,服务器的安全组配置开放

在master主机上运行:

ssh-keygen -t rsa

一路回车,生成rsa加密秘钥

运行命令将公钥以追加的形式加入到authorized_keys文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

authorized_keys文件分发到从节点服务器中,演示用户为root

scp authorized_keys [节点主机名]:/root/.ssh/

使用ssh命令尝试登录从节点验证是否成功

ssh [主机名]

第一次连接需要输入yes,如果没有要求输入密码,则配置成功

同样的方法,将从节点slave的ssh秘钥也分发到master中

JDK配置

下载、解压

配置环境变量:

vim ~/.bash_profile

添加环境变量:

JAVA_HOME=jdk存放的目录
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

按ESC键输入:wq退出vim编辑器

执行使环境变量生效

source ~/.bash_profile

使用java -version和javac -version 验证jdk安装是否成功

Hadoop配置

官网下载Hadoop

新增环境变量Hadoop,新增方法同jdk:

export HADOOP_HOME=hadoop存放目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
文件作用
workers记录所有的数据节点的主机名或 IP 地址
core-site.xmlHadoop 核心配置
hdfs-site.xmlHDFS 配置项
mapred-site.xmlMapReduce 配置项
yarn-site.xmlYRAN 配置项

修改配置文件:${HADOOP_HOME}/etc/hadoop

Core-site.xml

每个路径都需要手动修改为你想放置的位置

    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/newData/klns/hadoop/hdfs/tmp</value>
        <description>临时存储目录,修改为自己想放的地方</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master主机名:9000</value>
        <description>hdfs默认地址与端口</description>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>

hdfs-site.xml

每个路径都需要手动修改为你想放置的位置

<property><!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
        <name>dfs.namenode.name.dir</name>
        <value>file:/newData/klns/hadoop/hdfs/name</value>
        <description>namenode上存储hdfs名字空间元数据 </description>
     </property>
     <property><!--DataNode存放块数据的本地文件系统路径-->
         <name>dfs.datanode.data.dir</name>
         <value>file:/newData/klns/hadoop/hdfs/data</value>
         <description>datanode上数据块的物理存储位置</description>
     </property>
     <property><!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>[cronos-slave]:50090</value>
        <description>这个主机名设置哪个节点,SecondaryNameNode就启动在哪个服务器上</description>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
        <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value>
        <description>only cofig in clients</description>
    </property>

Mapred-site.xml

每个路径都需要手动修改为你想放置的位置

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/newData/klns/hadoop/hadoop</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/newData/klns/hadoop/hadoop</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/newData/klns/hadoop/hadoop</value>
    </property>

Yarn-site.xml

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>cronos-master</value>
    <description>The hostname of the RM.修改为主节点主机名</description>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中各添加javahome

export JAVA_HOME=/newData/klns/jdk/jdk1.8.0_291

workers文件中填写主机名,主从都写

image-20220414135723076

进入目录${HADOOP_HOME}/sbin

修改start-dfs.sh、stop-dfs.sh

在文件头部加上:

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root

修改start-yarn.sh、stop-yarn.sh

在文件头部加上:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

保存

执行hadoop version查看版本信息

image-20220414140523464

在master主机上执行start-dfs.sh启动hdfs服务,执行jps查看已启动的服务

image-20220414140718699

此时的slave主机执行jps之后显示:

image-20220414140857726

浏览器访问:

http://主节点ip:9870/

可以访问到hdfs面板与详细信息

image-20220414141409513

格式化HDFS:
hdfs namenode -format

这一步不能省略,也只能执行一次,不然后面会报错

HDFS基础shell:
# 显示根目录 / 下的文件和子目录,绝对路径
hadoop fs -ls /
# 新建文件夹,绝对路径
hadoop fs -mkdir /hello
# 上传文件
hadoop fs -put hello.txt /hello/
# 下载文件
hadoop fs -get /hello/hello.txt
# 输出文件内容
hadoop fs -cat /hello/hello.txt

主机上执行start-yarn.sh启动yarn与MapReduce服务

主节点:

image-20220414141450432

从节点:

image-20220414141521043

现在我们准备一份文本文件 input.txt:

I love cronos
I like cronos
I love hadoop
I like hadoop

将以上内容用文本编辑器保存。

创建目录:

hadoop fs -mkdir /wordcount
hadoop fs -mkdir /wordcount/input

执行 MapReduce:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /wordcount/input /wordcount/output

查看执行结果:

hadoop fs -cat /wordcount/output/part-r-00000

如果正常,将会显示:

I       4
hadoop  2
like    2
love    2
cronos  2

小结

这是一篇我四处碰壁之后得到的一个相对于初学者来说最完整的安装教程与基础使用教程,已经尽可能规避掉所有的错误点

在这里我提醒一下,一定一定要将放在公网的服务器安全组配置完备,不然的话hadoop集群会被不怀好意的人植入病毒然后拿去挖矿,我已经被坑过两次了,服务器也重置了两次

最后,给我点个关注点个赞呗,之后我还会出HBASE的配置和hadoop的使用教程

### 回答1: Hadoop个开源的分布式计算框架要用于处理大规模数据集。它的核心是HDFS(Hadoop分布式文件系统)和MapReduce计算模型。 Spark是个快速、通用的大数据处理引擎,可以在内存中进行数据处理,比Hadoop MapReduce更快。它支持多种数据源,包括HDFS、HBase、Cassandra等。 Storm是个分布式实时计算系统,可以处理实时数据流。它的核心是Storm集群,可以在多个节点上运行,实现高可用性和可扩展性。 Flink是个分布式流处理框架,可以处理实时数据流和批处理数据。它的核心是DataStream API,可以进行流式计算和窗口计算。 Samza是个分布式流处理框架,可以处理实时数据流。它的核心是Kafka和YARN,可以实现高可用性和可扩展性。 ### 回答2: 大数据框架是指组用于处理大规模数据的软件工具。随着大数据及其分析应用的不断增长,数十个大数据框架已经随着时间而推出,其中包括hadoop、spark、storm、flink、samza等。下面将对这几种大数据框架进行详细介绍。 1. Hadoop Hadoop个在大数据应用领域最流行的框架。它是以Java语言开发的,是个分布式的计算平台。通过它,用户能够处理超过普通计算机可以承受的数据量。Hadoop集群由多个计算机组成,在不同的计算机上存储和计算数据。Hadoop要组件包括HDFS(分布式文件系统),MapReduce计算模型(可以实现大规模数据的并行处理)。 2. Spark Spark是个基于内存的计算框架,可以实现大数据的快速处理。与Hadoop相比,Spark运行速度更快,因为它可以在内存中执行计算任务。Spark可以通过Java、Scala和Python编写,还支持Spark SQL(基于SQL的查询),Spark Streaming(处理实时数据流)、MLlib(机器学习库)等功能模块。 3. Storm Storm也是个实时数据处理框架。它能够实现种“实时数据流”的处理模式,这在需要对流式数据进行实时处理和计算的场景中非常有用。Storm是个分布式的框架,包括多个节点,支持高可靠性、水平扩展、非常灵活的拓扑连接等功能。 4. Flink Flink是个高度可扩展、分布式的计算框架。它支持流式处理和批处理。通过内存进行数据计算,速度更快,同时也支持实时流式数据处理。Flink将传统的批量处理和流式处理集成到了框架中,将批量计算看成种特殊形式的流式计算。 5. Samza Samza是个其他不同大数据框架的组件,它是个分布式流处理器,可以处理大量的流数据。它可以作为批处理系统的组件来使用,提供可靠的消息传递、基于字符串的状态存储、多维度流处理和都市需求等功能。Samza要用于大规模流式数据的分析和处理,通常和其他的大数据处理框架起使用。 总体来说,以上这几种大数据框架适用于不同的场景和需求。在实际应用时,需要根据具体情况进行选择和使用,以达到最佳的效果和效率。 ### 回答3: 大数据框架是当今大数据技术领域中越来越重要的部分。在众多大数据框架中,Hadoop、Spark、Storm、Flink和Samza是其中最常用的框架Hadoop是由Apache基金会开发的开源框架要用于存储和处理大数据。它的核心组件包括HDFS和MapReduce。HDFS是个分布式文件系统,通常用于存储大数据,而MapReduce是种分布式数据处理模型,用于对大数据进行批处理。 Spark是另个Apache开源项目,也是用于大数据处理的框架。与Hadoop不同的是,Spark使用内存计算,这意味着它可以比Hadoop更快地处理大量数据。Spark支持多种编程语言,包括Java、Scala和Python,也支持SQL查询和图形计算。 Storm是另个Apache开源项目,要用于流式数据处理。与Hadoop和Spark不同的是,Storm能够实时处理流数据,而不需要等待离线批处理。Storm支持容错和高可用性,并支持多种编程语言,包括Java、Scala和Clojure。 Flink是由Apache开发的开源流处理框架。与Storm类似,Flink也可以进行实时数据处理,并支持批处理模式。Flink的要特点是低延迟和高吞吐量,同时支持复杂事件处理和机器学习。 最后,Samza也是另个Apache开源框架要用于流式数据处理。与Storm和Flink不同的是,Samza的焦点是可扩展性和容错性。Samza的要优点之是它与Kafka集成良好,Kafka是个分布式消息队列。 总之,Hadoop、Spark、Storm、Flink和Samza都是在大数据领域中广泛应用的重要框架。每个框架都有自己的特点和优劣,应根据具体的大数据需求和场景进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FateBug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值