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"
。