三明市网站建设_网站建设公司_Photoshop_seo优化
2025/12/19 17:50:48 网站建设 项目流程

HDFS 的搭建步骤

1. 基础环境准备

1.1 三台虚拟机(ARM架构)

虚拟机:10.211.55.5、10.211.55.6、10.211.55.7
JDK包:jdk-8u461-linux-aarch64.tar.gz
Hadoop包:hadoop-3.3.6-aarch64.tar.gz

1.2 创建用户组 和 用户,并设置hdfs用户的密码为hdfs

(注意需要在 root 用户下)

sudo groupadd hadoop
sudo useradd -g hadoop -m hdfs
sudo passwd hdfs

1.3 查看防火墙状态,如果开着测试环境建议关闭,关闭防火墙

(注意需要在 root 用户下)

sudo systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

1.4 配置主机名

(注意需要在 root 用户下)

分别在三台机器上设置主机名(如:hadoop01、hadoop02、hadoop03)

hostnamectl set-hostname hadoop01   # 10.211.55.5
hostnamectl set-hostname hadoop02   # 10.211.55.6
hostnamectl set-hostname hadoop03   # 10.211.55.7

1.5 配置 /etc/hosts

(注意需要在 root 用户下)

在三台机器的 /etc/hosts 文件中添加如下内容:

10.211.55.5 hadoop01
10.211.55.6 hadoop02
10.211.55.7 hadoop03

1.4 三台机器上 JDK 和 Hadoop 安装后的路径(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

JDK:/usr/local/jdk1.8.0_461
Hadoop:/usr/local/hadoop


2. SSH免密登录配置

(注意需要在 root 和 hdfs 用户下)

在 hadoop01 上执行以下命令,生成密钥并分发到其他节点:

ssh-keygen -t rsa   # 一路回车
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

测试免密登录:

ssh hadoop02
ssh hadoop03

3. 环境变量配置

3.1 配置环境变量

(注意需要在 hdfs 用户下)

在三台机器的 ~/.bashrc 文件末尾添加:
hdfs用户:~/.bashrc

(注意需要在 root 用户下)

在三台机器的 /etc/profile 文件末尾添加:
root用户:/etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_461
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JSVC_HOME=/usr/local/bin

hdfs用户执行:

source ~/.bashrc

root用户执行:

source /etc/profile

4. 在三台机器上 Hadoop 配置文件修改(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

进入 /usr/local/hadoop/etc/hadoop 目录,主要修改以下文件:

4.1 core-site.xml

<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property>
</configuration>

4.2 hdfs-site.xml

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop/dfs/data</value></property>
</configuration>

4.3 yarn-site.xml(可选,若需YARN)

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop01</value></property>
</configuration>

4.4 mapred-site.xml

复制模板并编辑:

cp mapred-site.xml.template mapred-site.xml

内容如下:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

4.5 在三台机器上workers(或slaves)(如:hadoop01、hadoop02、hadoop03)

编辑 /usr/local/hadoop/etc/hadoop/workers 文件,内容如下:

hadoop01
hadoop02
hadoop03

5. 格式化 HDFS

(注意需要在 root 用户下)

5.1 在三台机器上赋权限(如:hadoop01、hadoop02、hadoop03)

sudo chown -R hdfs:hadoop /usr/local/hadoop

用hdfs用户登录, 在 hadoop01(主节点)执行:

hdfs namenode -format

6. 启动 Hadoop 集群(注意:仅在 hadoop01 机器下)

(注意需要在 hdfs 用户下)

在 hadoop01 上执行:

start-dfs.sh    # 启动hdfs
stop-dfs.sh     # 停止hdfs

7. 验证集群状态

(注意需要在 hdfs 用户下)

查看进程:

jps

在 hadoop01 有3个进程
SecondaryNameNode
DataNode
NameNode

在 hadoop02 和 hadoop03 有1个进程
DataNode

说明成功搭建hdfs

在 HDFS 的基础上加上 Kerberos 的 SASL 方式认证(注意需要在 root 用户下)

1. 基础环境准备

1.1 三台虚拟机(ARM架构)

虚拟机:10.211.55.5、10.211.55.6、10.211.55.7
三台虚拟机‘时间’需同步

1.2 在三台机器上安装 Kerberos 服务端和客户端(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

yum install -y krb5-server krb5-libs krb5-workstation

1.3 在三台机器上配置 Kerberos 服务的‘/etc/krb5.conf’配置如下,文件:/etc/krb5.conf(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

includedir /etc/krb5.conf.d/[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]dns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = truerdns = falsepkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crtdefault_realm = EXAMPLE.COM
#default_ccache_name = KEYRING:persistent:%{uid}[realms]EXAMPLE.COM = {kdc = hadoop01admin_server = hadoop01}[domain_realm]#.example.com = EXAMPLE.COM#example.com = EXAMPLE.COM

1.4 在三台机器上配置 Kerberos 服务的‘/var/kerberos/krb5kdc/kdc.conf’配置如下,文件:/var/kerberos/krb5kdc/kdc.conf(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88[realms]EXAMPLE.COM = {des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normaldatabase_name = /var/kerberos/krb5kdc/principaladmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordskey_stash_file = /var/kerberos/krb5kdc/.k5.EXAMPLE.COMkdc_ports = 88kdc_tcp_ports = 88max_life = 10h 0m 0smax_renewable_life = 7d 0h 0m 0smaster_key_type = aes256-ctssupported_enctypes = aes256-cts:normal aes128-cts:normal
}

1.5 在三台机器上配置 Kerberos 服务的‘/var/kerberos/krb5kdc/kadm5.acl’配置如下,文件:/var/kerberos/krb5kdc/kadm5.acl(如:hadoop01、hadoop02、hadoop03)

(注意需要在 root 用户下)

*/admin@EXAMPLE.COM    *

2. 初始化 Kerberos 数据库并启动服务(注意:仅在 hadoop01 机器下)

(注意需要在 root 用户下)

kdb5_util create -s
systemctl start krb5kdc
systemctl start kadmin
systemctl enable krb5kdc
systemctl enable kadmin

3. 创建 Hadoop 服务 Principal 并生成 Keytab(注意:仅在 hadoop01 机器下)

(注意需要在 root 用户下)

kadmin.local
# 创建管理员
addprinc root/admin
# 创建 Hadoop 服务 principal
addprinc -randkey hdfs/hadoop01@EXAMPLE.COM
addprinc -randkey hdfs/hadoop02@EXAMPLE.COM
addprinc -randkey hdfs/hadoop03@EXAMPLE.COM
addprinc -randkey HTTP/hadoop01@EXAMPLE.COM
addprinc -randkey HTTP/hadoop02@EXAMPLE.COM
addprinc -randkey HTTP/hadoop03@EXAMPLE.COM
# 生成 keytab 文件
xst -k /etc/security/keytabs/hdfs.service.keytab hdfs/hadoop01@EXAMPLE.COM hdfs/hadoop02@EXAMPLE.COM hdfs/hadoop03@EXAMPLE.COM
xst -k /etc/security/keytabs/spnego.service.keytab HTTP/hadoop01@EXAMPLE.COM HTTP/hadoop02@EXAMPLE.COM HTTP/hadoop03@EXAMPLE.COM

4. 分发 keytab 文件到各节点

(注意需要在 root 用户下)

scp /etc/security/keytabs/*.keytab hadoop02:/etc/security/keytabs/
scp /etc/security/keytabs/*.keytab hadoop03:/etc/security/keytabs/
chown hdfs:hadoop /etc/security/keytabs/*.keytab
chmod 400 /etc/security/keytabs/*.keytab

5. 生成自签名SSL证书

(注意需要在 root 用户下)

5.1 生成密钥库

keytool -genkeypair -alias hadoop -keyalg RSA -keysize 2048 \-dname "CN=hadoop01, OU=Hadoop, O=Test, L=City, ST=State, C=US" \-keypass hadoop123 -keystore /tmp/keystore.jks -storepass hadoop123 \-validity 365

5.2 导出证书

keytool -export -alias hadoop -keystore /tmp/keystore.jks \-rfc -file /tmp/hadoop.cert -storepass hadoop123

5.3 创建信任库

keytool -import -alias hadoop -file /tmp/hadoop.cert \-keystore /tmp/truststore.jks -storepass hadoop123 -noprompt

5.4 分发到所有节点

for host in hadoop01 hadoop02 hadoop03; dossh $host "mkdir -p $HADOOP_HOME/etc/hadoop/ssl"scp /tmp/keystore.jks $host:$HADOOP_HOME/etc/hadoop/ssl/scp /tmp/truststore.jks $host:$HADOOP_HOME/etc/hadoop/ssl/
done

6. 在三台机子上 Hadoop 配置文件修改 (如:hadoop01、hadoop02、hadoop03)

(注意需要在 hdfs 用户下)

进入 /usr/local/hadoop/etc/hadoop 目录,主要修改以下文件:

6.1 core-site.xml(追加)(如:hadoop01、hadoop02、hadoop03)

  <property><name>hadoop.security.authentication</name><value>kerberos</value></property><property><name>hadoop.security.authorization</name><value>true</value></property><property><name>hadoop.security.auth_to_local</name><value>RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//DEFAULT</value></property>

6.2 hdfs-site.xml(追加)(如:hadoop01、hadoop02、hadoop03)

  <!-- NameNode Kerberos配置 --><property><name>dfs.namenode.keytab.file</name><value>/etc/security/keytabs/hdfs.service.keytab</value></property><property><name>dfs.namenode.kerberos.principal</name><value>hdfs/_HOST@EXAMPLE.COM</value></property><!-- SecondaryNode Kerberos配置 --><property><name>dfs.secondary.namenode.kerberos.principal</name><value>hdfs/_HOST@EXAMPLE.COM</value></property><property><name>dfs.secondary.namenode.keytab.file</name><value>/etc/security/keytabs/hdfs.service.keytab</value></property><property><name>dfs.secondary.namenode.kerberos.internal.spnego.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><!-- DataNode Kerberos配置 --><property><name>dfs.datanode.keytab.file</name><value>/etc/security/keytabs/hdfs.service.keytab</value></property><property><name>dfs.datanode.kerberos.principal</name><value>hdfs/_HOST@EXAMPLE.COM</value></property><!-- Web UI认证(可选) --><property><name>dfs.web.authentication.kerberos.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property><name>dfs.web.authentication.kerberos.keytab</name><value>/etc/security/keytabs/HTTP.service.keytab</value></property><!-- 安全相关 --><property><name>dfs.block.access.token.enable</name><value>true</value></property><property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><!-- 使用SASL认证 --><property><name>dfs.data.transfer.protection</name><value>authentication</value></property><!-- 使用HTTPS(不是HTTP) --><property><name>dfs.http.policy</name><value>HTTPS_ONLY</value></property><!-- DataNode使用非特权端口(大于1024) --><property><name>dfs.datanode.address</name><value>0.0.0.0:9866</value></property><property><name>dfs.datanode.http.address</name><value>0.0.0.0:9864</value></property><!-- 设置DataNode IPC端口 --><property><name>dfs.datanode.ipc.address</name><value>0.0.0.0:9867</value></property>

6.3 ssl-server.xml(修改)(如:hadoop01、hadoop02、hadoop03)

  <configuration><!-- 使用SSL --><property><name>ssl.server.keystore.location</name><value>/usr/local/hadoop/etc/hadoop/ssl/keystore.jks</value></property><property><name>ssl.server.keystore.password</name><value>hadoop123</value></property><property><name>ssl.server.keystore.keypassword</name><value>hadoop123</value></property><property><name>ssl.server.truststore.location</name><value>/usr/local/hadoop/etc/hadoop/ssl/truststore.jks</value></property><property><name>ssl.server.truststore.password</name><value>hadoop123</value></property></configuration>

6.4 重新赋权限(如:hadoop01、hadoop02、hadoop03)

sudo chown -R hdfs:hadoop /usr/local/hadoop

7. 启动 Hadoop 集群

(注意需要在 hdfs 用户下)

7.1 停止所有 Hadoop 服务(注意:仅在 hadoop01 机器下)

stop-dfs.sh     # 停止hdfs

7.2 用 hdfs 用户启动集群(注意:仅在 hadoop01 机器下)

start-dfs.sh    # 启动hdfs

8. 创建 Kerberos 用户

(注意需要在 root 用户下)

8.1 获取票据,看是否在有效期

kinit -kt /etc/security/keytabs/hdfs.service.keytab hdfs/hadoop01@EXAMPLE.COM
klist

8.2 创建 Kerberos 用户 (注意:仅在 hadoop01 机器下)

kadmin.local -q "addprinc -pw 123456 sun"

9. 访问 HDFS

(注意需要在 hdfs 用户下)

9.1 获取票据,输入密码 123456

kinit sun
123456

9.2 创建一个文件夹

hdfs dfs -mkdir /tmp

9.3 上传文件

hdfs dfs -put 1.txt /tmp

9.4 查看文件

hdfs dfs -ls /tmp

10. 搭建过程图片(仅供参考)

图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询