资料:https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-common/SingleCluster.html
本次实践环境
- CentOS7
- JDK1.8_181
- Hadoop-3.2.0
在非 root 用户
下操作
先决条件
- Java
- ssh
下载
http://www.apache.org/dyn/closer.cgi/hadoop/common/
配置
tar -xzvf hadoop-3.2.0.tar.gz
cd hadoop-3.2.0
- 配置 etc/hadoop/hadoop-env.sh
vi etc/hadoop/hadoop-env.sh
添加配置:
# set to the root of your Java installation
export JAVA_HOME=/usr/local/java/latest
提示:可以使用 echo $JAVA_HOME
查看 JAVA_HOME 的路径
- 配置环境变量
vi /etc/profile
HADOOP_HOME=/usr/local/hadoop
export $HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
source /etc/profile
- 请尝试以下命令
./bin/hadoop
伪分布式操作
- 配置 etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- 配置 etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 设置 ssh
ssh localhost
如果没有密码,则无法ssh到localhost,请执行以下命令进行配置:
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
- 格式化hdfs文件系统
bin/hdfs namenode -format
执行完此命令后,会在 /tmp 目录下生成三个文件:hadoop-morningcat 目录、hsperfdata_morningcat 目录、hadoop-morningcat-namenode.pid 文件
- 启动NameNode守护程序和DataNode守护程序
sbin/start-dfs.sh
输出日志:
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [localhost.localdomain]
执行完此命令后,会在 /tmp
目录下生成三个文件: hadoop-morningcat-namenode.pid、hadoop-morningcat-datanode.pid、hadoop-morningcat-secondarynamenode.pid
hadoop守护程序日志输出写入 $HADOOP_LOG_DIR 目录 (默认 $HADOOP_HOME/logs).
访问 http://localhost:9870 ,浏览 NameNode 的 Web 界面;
CentOS 下关闭防火墙:stop firewalld.service
本机测试地址:http://172.16.206.129:9870
提示:若在重新执行 sbin/start-dfs.sh 时,nameNode 启动失败
,可以尝试将 /tmp 目录下 hadoop-morningcat-namenode.pid、hadoop-morningcat-datanode.pid、hadoop-morningcat-secondarynamenode.pid 三个文件删除,然后重试。
- 创建执行 MapReduce 作业所需的 HDFS 目录:
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/morningcat
bin/hdfs dfs -ls /
- 将输入文件复制到分布式文件系统中
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input
bin/hdfs dfs -ls input
- 运行一些提供的示例
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar grep input output ‘dfs[a-z.]+’
将结果拷贝出来查看
bin/hdfs dfs -get output myoutput
cat myoutput/*
或直接查看 hdfs 文件内容
bin/hdfs dfs -cat output/*
- 停止 hdfs
sbin/stop-dfs.sh