Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
下面我们就来在虚拟机上在安装一下单结点的hadoop吧。
一、ssh免密码登录
Hadoop的进程之间同信使用ssh方式,需要每次都要输入密码。为了实现自动化操作,需要配置ssh免密码登陆方式。
1.停止并禁用防火墙
systemctl stop firewalld && systemctl disable firewalld
2.打开sshd服务
需要编辑/etc/ssh/sshd_config
打开sshd服务.
vi /etc/ssh/sshd_config
放开标注的文档(去掉#):
重启服务,使刚才的修改生效(centos7上命令)
systemctl restart sshd.service
3.修改/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# add
192.168.89.130 master
4、修改/etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=master
使用如下命令使刚才的修改/etc/sysconfig/network生效
source /etc/sysconfig/network
service network restart
5.创建hadoop用户
adduser hadoop '123456'
6.创建hdfs目录
su hadoop
cd ~
创建如下目录的文件夹
- home
- hadoop
- hdfs
- data
- name
- hdfs
- hadoop
mkdir -p hdfs/data
mkdir -p hdfs/name
7.生成ssh公私钥对
生成ssh公私钥对,输入如下命令然后一路回车.
这时候会在/home/hadoop/下生成.ssh目录,目录中有文件id_rsa和id_rsa.pub。下面我们实现免密登陆过程
cd .ssh/
cat id_rsa.pub >> authorized_keys
chmod 644 authorized_keys
这时候在.ssh目录下会多出一个authorized_keys文件。下面我们测试下是否能免密登陆
如有提示输入“yes”回车即可。之后可以看到免密登陆成功.
二、安装hadoop
1.官网下载hadoop
可以到官网下载 hadoop-2.8.0,然后通过rz上传到虚拟机当中。
解压hadoop到/usr/local目录
tar -zxvf hadoop-2.8.0 -C /usr/local
chown -R hadoop:hadoop /usr/local/hadoop-2.8.0
2、配置hadoop环境变量
修改/etc/profile,配置环境变量。
export JAVA_HOME=/usr/local/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3、修改hadoop配置文件
修改hadoop配置文件 hadoop安装目录/etc/hadoop 修改的文件,需要修改的文件如下:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
在目录中我们可以看到并没有mapred-site.xml
,但是有mapred-site.xml.template
,所以我们可以做如下操作。
cp mapred-site.xml.template mapred-site.xml
3.1 hadoop-env.sh
在文件中增加如下配置:
export JAVA_HOME=/usr/local/jdk1.8.0_111
export HADOOP_PREFIX=/usr/local/hadoop-2.8.0
修改后如下:
3.2 yarn-env.sh
yarn-env.sh在文件中增加如下配置:
export JAVA_HOME=/usr/local/jdk1.8.0_111
修改后如下:
3.3 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.home.dir</name>
<value>file:/home/hadoop/hdfs</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hdfs</value>
</property>
</configuration>
3.4 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
</configuration>
3.5 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
3.6 yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
3.7 slaves
修改slaves,加入节点主机名称,保存并退出:
master
4.格式化namenode命令
hdfs namenode -format
5. 启动hadoop
# 启动hadoop方法一
start-all.sh
# 启动hadoop方法二
start-dfs.sh
start-yarn.sh
6、启动成功
访问http://192.168.89.130:8088/
,显示如下页面:
访问http://192.168.89.130:50070/
,显示如下页面:
三、遇到的问题
访问但是http://192.168.89.130:8088/
成功,但是访问”http://192.168.89.130:50070/”不成功。发现data下面没有文件。
把name下面的文件copy到data文件夹下面。
cp -r name/* data/
其实当你真正启动成功使用jps命令可以看到如下显示当前所有java进程pid。