記事ディレクトリ
準備
3 つの仮想マシン、java を構成し、hadoop-3.1.3 を 3 つの仮想マシンの指定されたディレクトリに解凍します。
hadoop102,hadoop103,hadoop104
クラスタ展開の計画
注: NameNode と SecondaryNameNode を同じサーバーにインストールしないでください
注: ResourceManager もメモリを消費するため、NameNode と SecondaryNameNode と同じマシンに構成しないでください。
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | データノード | SecondaryNameNode DataNode |
糸 | ノードマネージャー | ResourceManager NodeManager | ノードマネージャー |
共通ポート番号の説明
デーモン | アプリ | Hadoop2 | Hadoop3 |
---|---|---|---|
NameNode ポート | Hadoop HDFS NameNode | 8020/9000 | 9820 |
Hadoop HDFS NameNode HTTP UI | 50070 | 9870 | |
セカンダリ NameNode ポート | セカンダリ NameNode | 50091 | 9869 |
セカンダリ NameNode HTTP UI | 50090 | 9868 | |
DataNode ポート | Hadoop HDFS DataNode IPC | 50020 | 9867 |
Hadoop HDFS データノード | 50010 | 9866 | |
Hadoop HDFS DataNode HTTP UI | 50075 | 9864 |
SSH パスワードなしのログイン構成
ssh-keygen -t rsa
改行を 3 回打つ
ssh-copy-id hadoop102
ssh-copy-id hadoop102
ssh-copy-id hadoop102
3 つのホストが相互にログインする
ssh hadoop10x
環境変数の構成
[xwk@hadoop102 ~]$ cd /etc/profile.d/
[xwk@hadoop102 profile.d]$ vim my_env.sh
#java
export JAVA_HOME=/opt/software/jdk
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/opt/software/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[xwk@hadoop102 profile.d]$ source /etc/profile
通常のユーザーに xwk root 権限を与える
私のユーザー名は xwk です。自分のユーザー名に従って設定してください
sudo vim /etc/sudoers
找到这行,在root那行下面插入xwk那行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xwk ALL=(ALL) NOPASSWD:ALL
強制保存して終了:wq!
クラスターを構成する
[xwk@hadoop102 profile.d]$ cd /opt/software/hadoop-3.1.3/etc/hadoop/
core-site.xml
xwk を自分のユーザー名に変更します。ファイルパスを自分のものに変更します
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为xwk -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>xwk</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.xwk.hosts</name>
<value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.xwk.groups</name>
<value>*</value>
</property>
<!-- 配置该xwk(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.xwk.groups</name>
<value>*</value>
</property>
<!--支持LZO压缩 -->
<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,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
ヤーンサイト.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</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_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
</configuration>
ワーカーを構成する
vim /hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
hadoop ディレクトリを他のホストの同じディレクトリにコピーします。
フォーマット
クラスターを初めて開始する場合は、hadoop102 ノードで NameNode をフォーマットする必要があります (NameNode をフォーマットすると新しいクラスター ID が生成されるため、NameNode と DataNode の間でクラスター ID の一貫性が失われ、クラスターは過去のノードを見つけることができないことに注意してください)。エラーが報告され、NameNode を再フォーマットする必要がある場合は、最初に namenode および datanode プロセスを停止し、すべてのマシンのデータおよびログ ディレクトリをフォーマット前に削除する必要があります。)
hdfs namenode -format
起動
上記で HDFS (hadoop102) を起動します
cd /opt/software/hadoop-3.1.3/sbin/
./start-dfs.sh
上記で YARN (hadoop103) を開始します。
sbin/start-yarn.sh
Web 側の HDFS の
NameNode ブラウザに次のように入力します。http://hadoop102:9870
Web 側でYARN の ResourceManager ブラウザーを表示し、次のように入力します。http://hadoop103:8088