單機(jī)可以搭建偽分布式hadoop環(huán)境,用來測試和開發(fā)使用,hadoop包括:
hdfs服務(wù)器,
yarn服務(wù)器,yarn的前提是hdfs服務(wù)器,
在前面兩個(gè)的基礎(chǔ)上,課可以搭建hive服務(wù)器,不過hive不屬于hadoop的必須部分。
過程不要想的太復(fù)雜,其實(shí)挺簡單,這里用最糙最快最直接的方法,在我的單節(jié)點(diǎn)虛擬機(jī)上,搭建一個(gè)hdfs+yarn+hive:
首先,要配置好Java的JAVA_HOME和PATH(etc/hadoop/hadoop-env.sh里的JAVA_HOME要改為本機(jī)的JAVA_HOME),還是有ssh本機(jī)的免密碼登錄。
安裝配置啟動hdfs服務(wù)器:
然后,下載hadoop安裝包,這個(gè)包就包括了hdfs服務(wù)器和yarn服務(wù)器的執(zhí)行文件和配置腳本。解壓后,先配置 hdfs 服務(wù)器端,主要是兩個(gè)配置文件:core-site.xml 和 hdfs-site.xml 這個(gè)site我估計(jì)就是服務(wù)器端配置的意思。我是用root用戶配置和執(zhí)行的:
etc/hadoop/core-site.xml (這里9000是hfds服務(wù)器,監(jiān)聽端口號,這里要用自己的IP地址,如果用127.0.0.1,遠(yuǎn)程集群連不進(jìn)來)
<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)是服務(wù)器上存儲元數(shù)據(jù)和數(shù)據(jù)的目錄。
<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>
對上面配置的目錄進(jìn)行初始化/格式化:
$ bin/hdfs namenode -format
執(zhí)行sbin里的start-dfs.sh就可以啟動hdfs文件系統(tǒng)服務(wù)器了,可以jps查看一下有哪些java進(jìn)程:
如果在本地(服務(wù)器上),執(zhí)行
hdfs dfs -ls /
就可以查看hdfs上的文件了,還可以用其它命令操作hdfs:
hdfs dfs -mkdir /user/root
hdfs dfs -mkdir input
安裝配置啟動yarn服務(wù)器:
上面只是配置了hdfs服務(wù)器,要想跑hive或mapreduce,還需要配置和啟動調(diào)度器:yarn
etcd/hadoop/mapred-site.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 設(shè)置Container的能繼承NodeManager的哪些環(huán)境變量)
<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執(zhí)行時(shí),會在NodeManager上創(chuàng)建Container,在Container上執(zhí)行Task(JAVA程序),該程序需要環(huán)境變量(如:JDK、HADOOP_MAPRED_HOME…),該參數(shù)就是 設(shè)置Container的能繼承NodeManager的哪些環(huán)境變量。
-- 引自?
HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}-CSDN博客
啟動yarn
start-yarn.sh
[root@neoap082 hadoop-3.3.6]# jps
430131 Jps
422691 ResourceManager
416862 NameNode
417388 SecondaryNameNode
422874 NodeManager
417082 DataNode
?執(zhí)行 mapreduce 任務(wù)(java程序)
$ 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的元數(shù)據(jù)一般使用mysql存儲,也可以使用hive自帶的數(shù)據(jù)庫derby,如果使用derby,那么hive的安裝、配置、啟動非常簡單:
先要單獨(dú)下載hive:
不需要修改任何hive的配置文件,就是最簡情況下,只要配置好hdfs和yarn,不需要配置hive。
但是,第一次使用以前,需要初始化 hive:
hdfs dfs -mkdir -p /user/hive/warehouse
bin/schematool -dbType derby -initSchema
初始化的數(shù)據(jù)在metastore_db里,要重新初始化只要?jiǎng)h除這個(gè)目錄,再執(zhí)行上面的命令即可,有些奇怪的問題可以這樣解決。
然后直接執(zhí)行 bin目錄下的hive,這樣就進(jìn)入了hive命令行,也啟動了hive服務(wù)器,這種只能用來學(xué)習(xí)測試,不過也足夠了。
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表數(shù)據(jù)是一個(gè)hdfs目錄下的文件,可以設(shè)置這些文件存儲時(shí)的格式和壓縮算法,例如,下面的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格式存儲,數(shù)據(jù)塊以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");文章來源:http://www.zghlxwxcb.cn/news/detail-829092.htmlinsert into basic_data_orc_snappy select * from basic_data_textfile;文章來源地址http://www.zghlxwxcb.cn/news/detail-829092.html
到了這里,關(guān)于單機(jī)搭建hadoop環(huán)境(包括hdfs、yarn、hive)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!