草稿

install

https://help.aliyun.com/zh/ecs/user-guide/build-a-hadoop-environment

vim /opt/hadoop/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop/tmp</value>
        <description>location to store temporary files</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop/tmp/dfs/data</value>
    </property>

如果不手动指定,Hadoop 默认会将临时数据放在 /tmp/hadoop-${user.name} 目录下


创建用户组和用户

groupadd test
useradd -m -g test test

# 这种方法允许该用户在本地运行进程,但切断了远程访问(推荐)
echo DenyUsers test >> /etc/ssh/sshd_config
# 设置密码
passwd test
visudo
test  ALL=(ALL)       NOPASSWD:ALL
chown -R test:test /opt/hadoop/

Hadoop 的启动脚本是通过 SSH 登录到各个节点(即便只有 localhost 一个节点)来启动服务的

ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 环境变量的隔离: 当执行 start-dfs.sh 时,它会启动多个 SSH 会话。这些会话通常是 Non-interactive Shell,它们不会加载 /etc/profile 或 ~/.bashrc。
  • Hadoop 的自救机制: hadoop-env.sh 是 Hadoop 运行环境的“宪法”。只要在这里定义了,无论通过什么方式启动,Hadoop 都能准确找到 Java。
$  vim /opt/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/java/jdk-11.0.30
export HADOOP_HOME=/opt/hadoop

export HDFS_NAMENODE_OPTS="-Xms256m -Xmx512m"
export HDFS_DATANODE_OPTS="-Xms256m -Xmx512m"
export HDFS_SECONDARYNAMENODE_OPTS="-Xms256m -Xmx512m"

hive 和 Hadoop 的版本保持一致,都使用JDK8,并且都使用非root用户

更多推荐