环境
ubuntu18 + hadoop2.7.7 + jdk1.8
准备
- 版本选择
根据Hadoop HBase JAVA版本兼容情况, 推荐安装 Hadoop-2.7.1+ 与 Java1.8 - 安装java, 并添加环境变量
添加PPA仓库(这是OpenJdk 8 PPA仓库)sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
vi /etc/profile # vi---vim export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 export PATH=/opt/hadoop/hdfs/bin:$PATH # 为之后安装的Hadoop配置变量
若系统安装了多个版本的java, 可用下面语句进行切换source /etc/profile # 让设置生效
安装ssh (略)sudo update-alternatives --config java # 更新可选java配置 java -version # 查看Java版本
安装
Hadoop部署方式分三种,Standalone mode、Pseudo-Distributed mode、Cluster mode,其中前两种都是在单机部署。
-
Hadoop单机模式安装
standalone mode
(独立模式)这种模式下仅1个节点运行1个java进程,主要用于调试
本地模式是最简单的模式,所有模块都运行与一个JVM进程中,使用的本地文件系统,而不是HDFS,本地模式主要是用于本地开发过程中的运行调试用。下载hadoop安装包后不用任何设置,默认的就是本地模式。- 创建 hadoop 用户, 并加入 sudo 用户组.
sudo adduser hadoop sudo usermod -G sudo hadoop
- 下载并安装Hadoop
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz #或者从官网下载 tar zxvf hadoop-2.7.7.tar.gz mv hadoop2.7.7 /opt/hadoop/hdfs # 移动文件并重命名 chmod 777 /opt/hadoop # 授予hadoop用户读写权限
- 配置Hadoop
在文件中添加以下语句cd /opt/hadoop/hdfs vi etc/hadoop/hadoop-env.sh #
export JAVA_HOME=/usr/java/latest # set to the root of your Java installation export HADOOP_PREFIX=/opt/hadoop/hdfs # 设置成你的hadoop安装文件夹
- 验证(运行自带的wordcount程序)
hadoop version mkdir input # 在Hadoop的安装目录下,创建input目录 cp etc/hadoop/*.xml input # 拷贝input文件到input目录下 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input output 'dfs[a-z.]+' 执行Hadoop job cat output/* # 查看结果
- 创建 hadoop 用户, 并加入 sudo 用户组.
-
伪分布式安装
修改设定文件 (确保当前所在目录为hadoop安装目录)# vi etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
# vi etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
设置ssh免密码登录
现在检查你是否可以在没有密码的情况下ssh到localhostssh localhost
如果在没有密码短语的情况下无法ssh到localhost,请执行以下命令
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
执行
以下是在本地运行MapReduce作业。如果要在YARN上执行作业,请参阅单节点上的YARN格式化文件系统
bin/hdfs namenode -format
启动NameNode守护程序和DataNode守护程序
sbin/start-dfs.sh
hadoop守护程序日志输出将写入$ HADOOP_LOG_DIR目录(默认为$ HADOOP_HOME / logs)
打开浏览器检查是否运行成功
输入:http://localhost:8088 进入ResourceManager管理页面 (需要配置yarn)
输入:http://localhost:50070 进入HDFS页面测试验证
hdfs dfs -mkdir -p /user/hadoop/input # 创建执行MapReduce作业所需的HDFS目录 hdfs dfs -put etc/hadoop input # 将输入文件复制到分布式文件系统中 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input output 'dfs[a-z.]+' # 执行示例 # 将输出文件从分布式文件系统复制到本地文件系统并检查 bin/hdfs dfs -get output output cat output/* # 或 直接查看分布式文件系统上的输出文件 hdfs dfs -cat output/*
测试验证完成, 停止守护进程
sbin/stop-dfs.sh
单节点上的YARN
可以通过设置一些参数并运行ResourceManager守护程序和NodeManager守护程序,以伪分布式模式在YARN上运行MapReduce作业。
配置参数如下:
修改mapred-site.xml文件# vi etc/hadoop/mapred-site.xml <configuration> <property> <name> mapreduce.framework.name </name> <value> yarn </value> </property> </configuration>
修改yarn-site.xml文件
#vi etc/hadoop/ <configuration> <property> <name> yarn.nodemanager.aux-services </name> <value> mapreduce_shuffle </value> </ property> </configuration>
启动ResourceManager守护程序和NodeManager守护程序:
sbin/start-yarn.sh
运行MapReduce作业
完成后,停止守护进程
总结分析
- ConnectionRefused Exception错误
官方解答
开关防火墙及端口命令
Check that there isn’t an entry for your hostname mapped to 127.0.0.1 or 127.0.1.1 in /etc/hosts (Ubuntu is notorious for this) - 重装方法
直接删除Hadoop文件 - 足以hosts文件配置
[参考与拓展]
HBase参考指南
Hadoop、Hbase、Hive版本兼容性
Hadoop官方文档
Hadoop单机部署
Hadoop环境搭建
[HBase安装]
[小贴士
jps , chmod , hosts文件
chmod
hosts原理及作用
环境变量的作用?