Hadoop Deployment [部署Hadoop]
Published: Sep. 26, 2022
本文记录了部署Hadoop的具体步骤,因为感觉以前每次部署都是Google一下,这回记录一下。这里使用Hadoop-2.10.2版本的standalone mode作为例子。
Install Hadoop
- 下载Hadoop-2.10.2,这里选择binary版本[也就是编译好的二进制代码],
hadoop-2.10.2.tar.gz - 解压到想要部署的目录,比如
/usr/local/hadoop/hadoop-2.10.2 - 配置环境变量到
PATH目录,比如export PATH="$HADOOP_HOME/sbin:$HADOOP_HOME/bin" - 添加
JAVA_HOME到$HADOOP_HOME/etc/hadoop/hadoop-env.sh
Configure Hadoop
Configuare $HADOOP_HOME/etc/hadoop/core-site.xml
添加下面信息到<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.10.2/tmp</value>
</property>
Configure $HADOOP_HOME/etc/hadoop/hdfs-site.xml
添加下面信息到<configuration>,其中name.dir和data.dir的路径需要写入权限。
<property>
<name>dfs.namenode.name.dir</name>
<!-- <value>file:/usr/local/hadoop/hadoop-2.10.2/data/namenode</value> -->
<value>file:/home/{user_name}/Develop/hadoop-data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!-- <value>file:/usr/local/hadoop/hadoop-2.10.2/data/datanode</value> -->
<value>file:/home/{user_name}/Develop/hadoop-data/datanode</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>127.0.0.1:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
Run Hadoop
配置完成后,首先格式化namenode
hdfs namenode -format
格式化成功后,因为是standalone mode,需要安装ssh-server,这样才能通过本机ssh访问本机
# install openssh-client and openssh-server
sudo apt update
sudo apt install openssh-client
sudo apt install openssh-server
# make sure ssh works
sudo systemctl status ssh
为了避免ssh访问过程中频繁的输入密码,可以通过ras-based ssh key方式
ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
之后就可以通过start-dfs.sh和stop-dfs.sh两个脚本启动HDFS
通过jps命令查看是否NameNode,DataNode,SecondaryNameNode进程都可以正常启动和关闭。
Spark Read HDFS
因为Apache Spark和Hadoop的配合紧密,Spark读取文件的时候默认就是读取HDFS路径,但是需要配置。
例如为了让spark-submit命令需要正确指向HDFS路径,需要配置$SPARK_HOME/conf/spark-env.sh,在其中添加export HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop"。