antony@notes:~/data-platform$ cat "hadoop-設定檔.md"
hadoop 設定檔
hadoop 設定檔
JAVA 環境變數
$ java -version
openjdk version "1.8.0-332"
OpenJDK Runtime Environment (build 1.8.0-332-b09)
OpenJDK 64-Bit Server VM (build 25.71-b09, mixed mode)- hive 跑程式會需要用到 java
$ echo $PATH
/opt/spark-3.2.2-bin-hadoop3.2/bin:/opt/spark-3.2.2-bin-hadoop3.2/sbin:/opt/openjdk-8u332-linux-x64/bin:/home/bigred/vmalpdt/bin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/hadoop-3.3.3/bin:/opt/hadoop-3.3.3/sbin:/opt/pig-0.17.0/bin:/opt/apache-hive-3.1.3-bin/bin:/opt/apache-zookeeper-3.6.3-bin/bin:/opt/hbase-2.4.13/bin- 我們在 linux 系統的任何目錄可以 run java 的命令是因為 Path 環境變數裡面有
/opt/openjdk-8u332-linux-x64/bin這個目錄 $ which java /opt/openjdk-8u332-linux-x64/bin/java
hadoop-env.sh
$ sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
.......
export JAVA_HOME=/opt/openjdk-8u332-linux-x64
.......
export HADOOP_HEAPSIZE=512
........
export HADOOP_LOG_DIR=/tmp- hadoop 要 run Java 程式,他不會咬 環境變數的 JAVA_HOME,他會看自己的
hadoop-env.sh這個設定檔裡面的 JAVA_HOME 這個變數 export HADOOP_HEAPSIZE=256,hadoop run 程式處理資料的記憶體大小 256 mb- hadoop run 的程式有 :
NameNode,SecondaryNameNode,DataNode,JobHistoryServer,ResourceManager,NodeManager
- hadoop run 的程式有 :
HADOOP_LOG_DIR=/tmp,NameNode或是SecondaryNameNode運作有 bug 的時候,資料會存在這裡設定的目錄。- ava 7 was end-of-lifed in April 2015, meaning Oracle would no longer publicly support it with security fixes.
壓縮命令解析
$ zip -r < 壓縮完的名字 > < 要壓縮的目錄 >hdfs-site.xml
$ sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
.........
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/bigred/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/bigred/dn</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>bigboss</value>
</property>
...........
</configuration><name>dfs.replication</name>,設定 1 個 block 存幾分,預設是 3 份,如果沒有 3 台 DataNode ,Hadoop 絕對 run 不起來。dfs.namenode.name.dir,設定nameNode儲存資料的目錄位置dfs.datanode.data.dir,設定dataNode儲存資料的目錄位置dfs.permissions.superusergroup,設定 hadoop 的管理群組
core-site.xml
$ sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
........
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://dtm1:8020</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://dtm1:8020</value>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>hadoop.user.group.static.mapping.overrides</name>
<value>rbean=soup;gbean=soup,rice;ybean=rice</value>
</property>
</configuration>fs.defaultFS,設定 Namenode 要在哪一台電腦跑,它的 port 號 : 8020 ( 國際標準 ),給新的好朋友使用fs.default.name,設定內容同上,不過這裡的設定項目是給舊的老朋友使用io.compression.codecs, hadoop 能接受的壓縮技術,尤其是bzip2很重要hadoop.user.group.static.mapping.overrides,