Skip to content

antony@notes:~/data-platform$ cat "hadoop-設定檔.md"

hadoop 設定檔

2022-08-07· data-platform ·資料科技平台

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_LOG_DIR=/tmpNameNode 或是 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
tags: 資料科技平台