做網(wǎng)站需要買什么電商平臺開發(fā)需要多少錢
1.?前期準備
系統(tǒng)環(huán)境:centos7.9
配置信息:8C8G100G
hadoop和hbase為單節(jié)點部署模式
jdk版本jdk1.8.0_361
1.1.?修改系統(tǒng)時間
timedatectl set-timezone <TimeZone>
1.2.?修改主機名以及主機名和IP的映射
vim /etc/hosts
#將自己的主機名以及ip映射添加進去
1.3.?關(guān)閉防火墻
臨時關(guān)閉防火墻
systemctl stop firewalld.service?
永久關(guān)閉
systemctl disable firewalld.service??
2.?hadoop部署
2.1.?下載安裝包
mkdir /u01
cd /u01
wget https:
//dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -zxvf hadoop-
3.3
.
6
.tar.gz
2.2.?修改配置文件
2.2.1.?修改core-site.xml
<configuration>
????
<property>
????????
<name>fs.defaultFS</name>
????????
<value>hdfs:
//192.168.68.129:9000</value>
????
</property>
????
<!-- 指定 hadoop 數(shù)據(jù)的存儲目錄 -->
????
<property>
????????
<name>hadoop.tmp.dir</name>
????????
<value>/u01/hadoop-
3.3
.
6
/tmp</value>
????
</property>
????
<property>
????????
<name>hadoop.proxyuser.root.hosts</name>
????????
<value>*</value>
????
</property>
????
<property>
????????
<name>hadoop.proxyuser.root.groups</name>
????????
<value>*</value>
????
</property>
????
<property>
????????
<name>io.compression.codecs</name>
????????
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec</value>
????
</property>
????
<property>
????????
<name>io.compression.codec.lzo.
class
</name>
????????
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
????
</property>
</configuration>
2.2.2.?修改hdfs-site.xml
<configuration>
????
<property>
????????
<name>dfs.namenode.name.dir</name>
????????
<value>/u01/hadoop-
3.3
.
6
/hdfs/name</value>
????????
<
final
>
true
</
final
>
????
</property>
????
<property>
????????
<name>dfs.datanode.data.dir</name>
????????
<value>/u01/hadoop-
3.3
.
6
/hdfs/data</value>
????????
<
final
>
true
</
final
>
????
</property>
????
<property>
????????
<name>dfs.http.address</name>
????????
<value>
192.168
.
68.129
:
50070
</value>
????
</property>
????
<property>
????????
<name>dfs.permissions</name>
????????
<value>
false
</value>
????
</property>
</configuration>
2.2.3.?修改yarn-site.xml
<configuration>
??
<property>
????
<name>yarn.nodemanager.aux-services</name>
????
<value>mapreduce_shuffle</value>
??
</property>
</configuration>
2.2.4.?修改hadoop-env.sh
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
export HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6
export HDFS_NAMENODE_USER=hadoop:
設(shè)置NameNode進程以hadoop用戶身份運行。NameNode是HDFS中的主節(jié)點,負責管理文件系統(tǒng)的命名空間和客戶端對文件的訪問。
export HDFS_DATANODE_USER=hadoop:
設(shè)置DataNode進程以hadoop用戶身份運行。DataNode是HDFS中的從節(jié)點,負責存儲實際的數(shù)據(jù)塊,并執(zhí)行讀寫操作。
export HDFS_SECONDARYNAMENODE_USER=hadoop:
設(shè)置Secondary NameNode進程以hadoop用戶身份運行。Secondary NameNode不是NameNode的備份,而是輔助NameNode進行檢查點操作,幫助保持NameNode的運行狀態(tài)。
export YARN_RESOURCEMANAGER_USER=hadoop:
設(shè)置ResourceManager進程以hadoop用戶身份運行。ResourceManager是YARN的一部分,負責整個集群的資源管理和分配。
export YARN_NODEMANAGER_USER=hadoop:
設(shè)置NodeManager進程以hadoop用戶身份運行。NodeManager是YARN的一部分,負責單個節(jié)點上的資源管理以及容器的生命周期管理。
export HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6:
指定MapReduce框架的安裝目錄。這通常指向Hadoop發(fā)行版的根目錄,在這個例子中是/u01/hadoop-3.3.6。
?
2.2.5.?修改mapred-site.xml
<configuration>
????
<property>
????????
<name>mapreduce.framework.name</name>
????????
<value>yarn</value>
????
</property>
????
<property>
????????
<name>yarn.app.mapreduce.am.env</name>
????????
<value>HADOOP_MAPRED_HOME=/u01/hadoop-
3.3
.
6
</value>
????
</property>
????
<property>
????????
<name>mapreduce.map.env</name>
????????
<value>HADOOP_MAPRED_HOME=/u01/hadoop-
3.3
.
6
</value>
????
</property>
????
<property>
????????
<name>mapreduce.reduce.env</name>
????????
<value>HADOOP_MAPRED_HOME=/u01/hadoop-
3.3
.
6
</value>
????
</property>
????
<!-- 這個參數(shù)設(shè)為
true
啟用壓縮 -->
????
<property>
????????
<name>mapreduce.output.fileoutputformat.compress</name>
????????
<value>
true
</value>
????
</property>
????
<property>
????????
<name>mapreduce.map.output.compress</name>
????????
<value>
true
</value>
????
</property>
????
<!-- 使用編解碼器 -->
????
<property>
????????
<name>mapreduce.output.fileoutputformat.compress.codec</name>
????????
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
????
</property>
</configuration>
2.2.6.?修改環(huán)境變量
vim /etc/profile
export HADOOP_HOME=/u01/hadoop-
3.3
.
6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2.3.?啟動hadoop服務
2.3.1.?格式化namenode
hdfs namenode -format
2.3.2.?啟動服務
./sbin/start-all.sh
啟動成功后,使用jps命令查看服務
顯示有NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager這5個服務
則為啟動成功
查看hdfs和yarn的web界面,端口分別是50070和8088
2.4.?驗證snappy壓縮
驗證方法:運行Hadoop的hadoop-mapreduce-examples-3.3.6.jar測試包進行wordcount,查看生成的文件大小
創(chuàng)建一個文件,input,鍵入以下內(nèi)容或其它內(nèi)容,把這個文件上傳到hdfs,當然也可以使用本地文件
jakchquihfquhdqwhcn9eiuhcf198fh8chquihfquhdqwhcwqhdb9uchquihfquhdqwhch91ugh2ufgb92ufb2ufsfcd
2.4.1.?未開啟壓縮
把mapred-site.xml和core-site.xml相關(guān)的snappy配置去掉,重啟hadoop服務,執(zhí)行以下命令行
./bin/hadoop jar /u01/hadoop-
3.3
.
6
/share/hadoop/mapreduce/hadoop-mapreduce-examples-
3.3
.
6
.jar wordcount /u01/input /u01/output-n
查看生成的文件大小,驗證結(jié)果
2.4.2.?開啟壓縮
執(zhí)行以下命令行
./bin/hadoop jar /u01/hadoop-
3.3
.
6
/share/hadoop/mapreduce/hadoop-mapreduce-examples-
3.3
.
6
.jar wordcount /u01/input /u01/output-y4
查看生成的文件大小,驗證結(jié)果
3.?hbase部署
3.1.?下載安裝包
cd /u01
wget https:
//dlcdn.apache.org/hbase/2.6.1/hbase-2.6.1-bin.tar.gz
tar -zxvf hbase-
2.6
.
1
-bin.tar.gz
cd hbase-
2.6
.
1
3.2.?修改配置文件
3.2.1.?修改hbase-site.xml
<configuration>
?
<property>
????
<name>hbase.cluster.distributed</name>
????
<value>
true
</value>
?
</property>
?
<property>
????
<name>hbase.rootdir</name>
????
<value>hdfs:
//master2:9000/hbase</value>
??
</property>
??
<property>
????
<name>hbase.tmp.dir</name>
????
<value>/u01/hbase-
2.6
.
1
/tmp</value>
??
</property>
??
<property>
????
<name>hbase.wal.provider</name>
????
<value>filesystem</value>
??
</property>
??
<property>
????
<name>hbase.io.compress.snappy.codec</name>
????
<value>org.apache.hadoop.hbase.io.compress.xerial.SnappyCodec</value>
??
</property>
</configuration>
3.2.2.?修改hbase-env.xml
如果啟動出現(xiàn)SLF4J: Found binding in [jar:file:/u01/hbase-2.6.1/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
則添加以下配置
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=
true
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true
這個命令的作用是設(shè)置環(huán)境變量 HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP
為 true
。這意味著在啟動 HBase 時,將禁用 Hadoop 類路徑查找功能。
通常情況下,HBase 在啟動時會嘗試查找 Hadoop 的類路徑,以便能夠與 Hadoop 集成。但是,在某些環(huán)境中,例如在不使用 Hadoop 或者希望使用自定義配置的情況下,禁用這個功能是有意義的。通過設(shè)置此環(huán)境變量為 true
,可以避免 HBase 自動查找 Hadoop 類路徑,從而可能解決一些依賴性問題或者提高啟動速度。
3.2.3.?添加環(huán)境變量
vim /etc/profile 或者 在/home目錄中的.bashrc文件中 添加
export HBASE_HOME=/u01/hbase-
2.6
.
1
export PATH=$PATH:$HBASE_HOME/bin
3.3.?啟動hbase服務
./bin/start-hbase.sh
啟動成功后,使用jps查看啟動的服務有有HQuorumPeer、HMaster、HRegionServer
3.4.?驗證snappy壓縮
驗證方法:使用hbase shell創(chuàng)建兩張表compress_1219_3和no_compress_1219_3,一張指定使用snappy壓縮,另一張不指定,然后使用hbase java api往這兩張表寫入相同的數(shù)據(jù),觀察表的存儲大小情況
3.4.1.?建表
使用hbase shell
create?
'compress_1219_3'
,{ NAME =>?
'cf'
, COMPRESSION =>?
'SNAPPY'
?}
create?
'no_compress_1219_3'
,{ NAME =>?
'cf'
?}
3.4.2.?生成數(shù)據(jù)
執(zhí)行兩次,依次向compress_1219_3和no_compress_1219_3寫數(shù)據(jù)
package
?com.easipass;
import
?org.apache.hadoop.conf.Configuration;
import
?org.apache.hadoop.hbase.HBaseConfiguration;
import
?org.apache.hadoop.hbase.TableName;
import
?org.apache.hadoop.hbase.client.Connection;
import
?org.apache.hadoop.hbase.client.ConnectionFactory;
import
?org.apache.hadoop.hbase.client.Put;
import
?org.apache.hadoop.hbase.client.Table;
import
?org.apache.hadoop.hbase.util.Bytes;
import
?java.io.IOException;
public
?class
?Main {
????
public
?static
?void
?main(String[] args)?
throws
?IOException {
????????
Configuration configuration = HBaseConfiguration.create();
????????
configuration.set(
"hbase.zookeeper.property.clientPort"
,?
"2181"
);
????????
// 如果是集群 則主機名用逗號分隔
????????
configuration.set(
"hbase.zookeeper.quorum"
,?
"192.168.68.129"
);
????????
Connection connection = ConnectionFactory.createConnection(configuration);
????????
//修改為compress_1219_3和no_compress_1219_3,分別執(zhí)行
????????
Table table = connection.getTable(TableName.valueOf(
"compress_1219_2"
));
????????
//rowkey
????????
for
?(
int
?i =?
1
; i <?
200000
; i++) {
????????????
Put put =?
new
?Put(Bytes.toBytes(
"H5000000"
+i));
????????????
//列簇,列名,列值
????????????
put.addColumn(
????????????????????
Bytes.toBytes(
"cf"
),
????????????????????
Bytes.toBytes(
"name"
),
????????????????????
Bytes.toBytes(
"AAAAAAABBBB中文Hadoop、hbase使用snappy壓縮"
+
"5000000"
+i)
????????????
);
????????????
put.addColumn(
????????????????????
Bytes.toBytes(
"cf"
),
????????????????????
Bytes.toBytes(
"age"
),
????????????????????
Bytes.toBytes(
"AAAAAAABBBB中age文Hadoop、hbase使用snappy壓縮"
+
"5000000"
+i)
????????????
);
????????????
table.put(put);
????????
}
????????
table.close();
????????
connection.close();
????
}
}
3.4.3.?從內(nèi)存flush到磁盤
使用hbase shell的flush命令手動將兩張表的數(shù)據(jù)從內(nèi)存寫到磁盤
flush?
'compress_1219_3'
flush?
'no_compress_1219_3'
3.4.4.?未開啟壓縮
查看表配置
查看region大小和表存儲大小
再來查看hdfs的存儲情況
第一列為一個副本的大小,第二列為3個副本占用的總存儲大小
3.4.5.?開啟壓縮
查看表配置
查看region大小和表存儲大小
共產(chǎn)生了一個region
再來查看hdfs的存儲情況
第一列為一個副本的大小,第二列為3個副本占用的總存儲大小