环境是VirtualBox虚拟机和Ubuntu操作系统,虚拟机和操作系统的安装见https://blog.csdn.net/zhangcjsyl/article/details/88142588
本文的参考文章:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation
Hadoop是以java开发,因此需要安装Java环境。首先查看java版本
$ java -version
请注意,推荐安装jdk8或以下的jdk版本,jdk1.9以上的javax包被禁用,按本文的安装配置方法会无法启动ResourceManager;如要使用jdk9以上的版本需要增加配置(见https://issues.apache.org/jira/browse/HADOOP-14978,hadoop推荐的jdk版本见https://wiki.apache.org/hadoop/HadoopJavaVersions),如果已经安装了jdk1.8及以下的java环境可以直接进行下一节设置SHH无密码登录。如果没有安装Java环境或者jdk版本在9以上就要进行下面的步骤进行安装:
下载apt软件安装包管理工具
$ sudo apt-get update
这一操作需要输入superuser的密码,然后安装software-properties
$sudo apt-get install software-properties-common
添加ppa:
$ sudo add-apt-repository ppa:webupd8team/java
更新系统:
$ sudo apt-get update
完毕后使用apt-get安装jdk,这里安装的事oracle的1.8版本jdk:
$ sudo apt-get install oracle-java8-installer
系统会询问是否继续执行,输入Y后按Enter即可。如果之前安装过jdk需要进行jdk版本切换:
$ sudo update-java-alternatives -s java-8-oracle
再次查看java版本,当看到如下的内容则已经安装成功。
Hadoop一般是集群部署,启动Hadoop时NameNode必须与DataNode连接,为了让系统能够顺利运行而不用输入密码就需要设置SSH无密码登录。
$ sudo apt-get install ssh
在终端执行以上命令,系统会询问是否继续,输入Y并按下Enter键。
终端输入下面的命令
$ sudo apt-get install rsync
这里采用rsa算法,也可采用dsa算法,就将rsa改为dsa即可:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
SSH Key会产生在用户根目录/home/zhangc(这里zhangc是我的用户名)下,输入下面的命令查看产生的SSH Key:
$ ll /home/zhangc/.ssh
运行后得到下面的结果:
.pub文件就是产生的Key,下面将这个Key放到许可证文件中去:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(>> 会将命令产生的输出附加在后面的文件末尾而不会覆盖该文件。)、
可以尝试进行本机的ssh无密码登录:
$ ssh localhost
成功后输入logout命令进行登出,不然的话有些命令无法使用(后面的gedit就是)
$ ssh logout
访问下载地址https://archive.apache.org/dist/hadoop/common/(这里可以使用北京信息学院镜像http://mirror.bit.edu.cn/apache/hadoop/common/)
选择要下载的版本,这里我选择的事hadoop-3.2.0的版本,点击进去复制选择.tar.gz的文件右键复制下载链接
然后在终端下输入wget和之前复制的链接
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
下载完成后解压缩下载的文件
$ sudo tar -zxvf hadoop-3.2.0.tar.gz
移动到/usr/local目录下
$ sudo mv hadoop-3.2.0 /usr/local/hadoop
在终端输入下面的命令,打开~/.bashrc文件
$ sudo gedit ~/.bashrc
在文件末尾输入下面的配置:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
如下图所示,然后点击保存,最后点击关闭按钮。
$ source ~/.bashrc
$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
找到如下位置
修改为自己的jdk路径:
终端输入以下命令:
$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml
在configuration标签中增加如下内容:
fs.default.name
hdfs://localhost:9000
如下图所示:
然后点击保存并退出。
在终端输入命令:
$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml
在configuration标签中增加如下内容:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
如下图所示:
然后点击保存并退出。
在终端输入命令:
sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
在configuration标签中增加如下内容:
dfs.replication
3
dfs.namenode.name.dir
file:/usr/local/hadoop/hadoop_data/hdfs/namenode
dfs.datanode.data.dir
file:/usr/local/hadoop/hadoop_data/hdfs/datanode
如下图所示:
然后点击保存并退出。
创建namenode和datanode目录:
$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
$ sudo chown zhangc:zhangc -R /usr/local/hadoop
这个操作会清除hdfs中的所有数据:
hadoop namenode -format
运行下面的命令启动hdfs:
$ start-dfs
启动yarn:
$ start-yarn.sh
以上两个命令可以用一个命令代替:
$ start-all.sh
使用jps查看当前已启动的进程:
$ jps
如下所示:
一定要有 DataNode、NodeManager、SecondaryNameNode、ResourceManager、NameNode这五个缺一不可才算启动成功。
访问Resource Manager界面localhost:8088和HDFS界面localhost:9870(hadoop2.x版本的默认的hdfs的端口是50070)
这样就启动成功了。