单机搭建hadoop环境(包括hdfs、yarn、hive)

单机可以搭建伪分布式hadoop环境,用来测试和开发使用,hadoop包括:

hdfs服务器

yarn服务器,yarn的前提是hdfs服务器,

在前面两个的基础上,课可以搭建hive服务器,不过hive不属于hadoop的必须部分。

过程不要想的太复杂,其实挺简单,这里用最糙最快最直接的方法,在我的单节点虚拟机上,搭建一个hdfs+yarn+hive:

首先,要配置好Java的JAVA_HOME和PATH(etc/hadoop/hadoop-env.sh里的JAVA_HOME要改为本机的JAVA_HOME),还是有ssh本机的免密码登录。

然后,下载hadoop安装包,这个包就包括了hdfs服务器和yarn服务器的执行文件和配置脚本。解压后,先配置 hdfs 服务器端,主要是两个配置文件:core-site.xml 和 hdfs-site.xml 这个site我估计就是服务器端配置的意思。我是用root用户配置和执行的:

etc/hadoop/core-site.xml (这里9000是hfds服务器,监听端口号,这里要用自己的IP地址,如果用127.0.0.1,远程集群连不进来)

XML 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://172.32.155.57:9000</value>
    </property>

</configuration>

etc/hadoop/hdfs-site.xml (dfs.namenode.name.dir 和 dfs.namenode.data.dir)是服务器上存储元数据和数据的目录。

XML 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/mnt/disk01/hadoop/dfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/mnt/disk01/hadoop/dfs/data</value>
    </property>

</configuration>

对上面配置的目录进行初始化/格式化:

bash 复制代码
 $ bin/hdfs namenode -format

执行sbin里的start-dfs.sh就可以启动hdfs文件系统服务器了,可以jps查看一下有哪些java进程:

如果在本地(服务器上),执行

bash 复制代码
hdfs dfs -ls /

就可以查看hdfs上的文件了,还可以用其它命令操作hdfs:

bash 复制代码
hdfs dfs -mkdir /user/root
hdfs dfs -mkdir input

上面只是配置了hdfs服务器,要想跑hive或mapreduce,还需要配置和启动调度器:yarn

etcd/hadoop/mapred-site.xml

XML 复制代码
<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>

   <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

etcd/hadoop/yarn-site.xml (这里 yarn.resourcemanager.hostname 要写自己的IP,yarn.nodemanager.env-whitelist 设置Container的能继承NodeManager的哪些环境变量)

XML 复制代码
<configuration>

<!-- Site specific YARN configuration properties -->

    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>172.32.155.57</value>
    </property>

   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>

</configuration>

MapReducer执行时,会在NodeManager上创建Container,在Container上执行Task(JAVA程序),该程序需要环境变量(如:JDK、HADOOP_MAPRED_HOME...),该参数就是 设置Container的能继承NodeManager的哪些环境变量。

-- 引自

[HADOOP_MAPRED_HOME={full path of your hadoop distribution directory}-CSDN博客](https://blog.csdn.net/Yellow_python/article/details/115724120 "HADOOP_MAPRED_HOME={full path of your hadoop distribution directory}-CSDN博客")

启动yarn

bash 复制代码
start-yarn.sh
[root@neoap082 hadoop-3.3.6]# jps
430131 Jps
422691 ResourceManager
416862 NameNode
417388 SecondaryNameNode
422874 NodeManager
417082 DataNode

执行 mapreduce 任务(java程序)

bash 复制代码
  $ bin/hdfs dfs -mkdir -p /user/root
  $ bin/hdfs dfs -mkdir input
  $ bin/hdfs dfs -put etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.]+'
  $ bin/hdfs dfs -cat output/*

安装hive:

hive的元数据一般使用mysql存储,也可以使用hive自带的数据库derby,如果使用derby,那么hive的安装、配置、启动非常简单:

先要单独下载hive:

不需要修改任何hive的配置文件,就是最简情况下,只要配置好hdfs和yarn,不需要配置hive。

但是,第一次使用以前,需要初始化 hive:

复制代码
hdfs dfs -mkdir -p /user/hive/warehouse
bin/schematool -dbType derby -initSchema

然后直接执行 bin目录下的hive,这样就进入了hive命令行,也启动了hive服务器,这种只能用来学习测试,不过也足够了。

CREATE TABLE basic_data_textfile

(

k00 INT,

k01 DATE,

k02 BOOLEAN,

k03 TINYINT,

k04 SMALLINT,

k05 INT ,

k06 BIGINT ,

k07 BIGINT,

k08 FLOAT ,

k09 DOUBLE ,

k10 DECIMAL(9,1) ,

k11 DECIMAL(9,1) ,

k12 TIMESTAMP,

k13 DATE ,

k14 TIMESTAMP,

k15 CHAR(2),

k16 STRING,

k17 STRING ,

k18 STRING

)

row format delimited fields terminated by '\|' ;

从本地文件加载

load data local inpath '/opt/doris_2.0/basic_data.csv' into table basic_data;

从hdfs路径加载

load data inpath '/user/root/basic_data.csv' into table basic_data_lzo;

hive表数据是一个hdfs目录下的文件,可以设置这些文件存储时的格式和压缩算法,例如,下面的basic_data_lzop表一lzo压缩,压缩文件格式为lzop:

set hive.exec.compress.output=true;

set mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;

set io.compression.codecs=com.hadoop.compression.lzo.LzopCodec;

CREATE TABLE basic_data_lzop

(

k00 INT,

k01 DATE,

k02 BOOLEAN,

k03 TINYINT,

k04 SMALLINT,

k05 INT ,

k06 BIGINT ,

k07 BIGINT,

k08 FLOAT ,

k09 DOUBLE ,

k10 DECIMAL(9,1) ,

k11 DECIMAL(9,1) ,

k12 TIMESTAMP,

k13 DATE ,

k14 TIMESTAMP,

k15 CHAR(2),

k16 STRING,

k17 STRING ,

k18 STRING

)

row format delimited fields terminated by '\|' ;

insert into basic_data_lzop select * from basic_data;

basic_data_orc_snappy 表以orc格式存储,数据块以snappy压缩:

CREATE TABLE basic_data_orc_snappy

(

k00 INT,

k01 DATE,

k02 BOOLEAN,

k03 TINYINT,

k04 SMALLINT,

k05 INT ,

k06 BIGINT ,

k07 BIGINT,

k08 FLOAT ,

k09 DOUBLE ,

k10 DECIMAL(9,1) ,

k11 DECIMAL(9,1) ,

k12 TIMESTAMP,

k13 DATE ,

k14 TIMESTAMP,

k15 CHAR(2),

k16 STRING,

k17 STRING ,

k18 STRING

)

row format delimited fields terminated by '\|'

stored as orc tblproperties ("orc.compress"="SNAPPY");

insert into basic_data_orc_snappy select * from basic_data_textfile;

相关推荐
折哥的程序人生 · 物流技术专研9 小时前
效率翻倍:出版社多库区复合型 ABC 仓储拣选体系全解(含直发/越库/箱式立库/托盘立库)
大数据
Elastic 中国社区官方博客9 小时前
Elasticsearch:智能搜索 - AI builder 及 skills
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·全文检索
跨境摸鱼10 小时前
低价模型承压阶段跨境品牌如何把重心转向复购与客单
大数据·人工智能·跨境电商·亚马逊·跨境
果汁华10 小时前
LangGraph:构建状态化 AI 代理的革命性编排框架
大数据·人工智能
面向Google编程11 小时前
从零学习Kafka:生产者分区机制
大数据·kafka
盘古信息IMS11 小时前
全域场景重构,激活智造新未来!盘古信息机加行业数智化解决方案深度解析
大数据·人工智能
跨境卫士-小汪11 小时前
多国站点利润分化加剧跨境卖家如何重新排优先级
大数据·人工智能·产品运营·跨境电商·跨境
精益数智工坊11 小时前
物料管理是什么?物料管理的具体工作有哪些?
大数据·前端·数据库·人工智能·精益工程
xixixi7777711 小时前
全模态原生大脑降临:GPT-5.5(Spud)发布,推理/编码提升30%,百万上下文+原生电脑控制,开启Agent新纪元
大数据·网络·人工智能·gpt·安全·电脑·量子计算
MoonBit月兔11 小时前
MoonBit 大型软件合成挑战赛决赛暨 Meetup 0.9 版本专场回顾
大数据·开发语言·人工智能·moonbit