Hadoop分为三种配置模式:独立模式(standalone|local),伪分布模式(Pseudodistributed mode),完全分布式(full distributed)
说在前面
- 工作环境:VMware® Workstation 12 Pro 12.5.6 build-5528349
- linux版本:CentOS-7-x86_64-Minimal-1611.iso
- JDK版本:jdk-8u65-linux-x64.tar.gz
- Hadoop版本:hadoop-2.7.6.tar.gz
独立模式(standalone|local)
在正式的配置之前先说一说独立模式,其实我们安装完Hadoop,将环境变量配置好,这时Hadoop的配置就是独立模式,使用的是本地的文件系统,不需要启动单独的进程。如下图就是独立模式的文件系统(其实就是本地文件系统):
配置伪分布模式(Pseudodistributed mode)
伪分布模式需要我们自己手动配置,下面是具体的配置过程,友情提示:小心小心小心!!!
一. 修改配置文件
进入${HADOOP_HOME}/etc/hadoop目录(cd /soft/hadoop/etc/hadoop),修改如下配置文件:
- 配置core-site.xml文件
$> nano core-site.xml //进入后删除里面的注释,配置如下
<?xml version="1.0"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
- 配置hdfs-site.xml文件
<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 配置mapred-site.xml
//这里需要注意,在上面我们并没有看到mapred-site.xml文件,而是一个名为mapred-site.xml.template,我们需要复制一个出来,然后配置就可以了
$> cp mapred-site.xml.template mapred-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 配置yarn-site.xml文件
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置SSH(免密登录)
我们知道Hadoop集群需要一个根节点去管理很多的子节点,假如我们每登录一个子节点都要输入密码验证,那效率将会非常低下,所以就需要配置一种免密登录的模式,无需输入密码就能登录。ssh就是这样一种机制。
- 检查是否安装了ssh相关软件包(openssh-server + openssh-clients + openssh)
$> yum list installed | grep ssh
- 检查是否启动了sshd进程
sshd: 是否开启守护进程(daemon)
$> ps -Af | grep sshd
- 在client端生成公私秘钥对
//rsa 是一种不可逆算法,它会在家目录下的./ssh文件夹下生成公私秘钥文件
$> ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在家目录下会生成一个.ssh文件夹:
- 生成~/.ssh文件夹,里面有id_rsa(私钥) + id_rsa.pub(公钥)
- 追加公钥到~/.ssh/authorized_keys文件中(文件名、位置固定)
$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys
- 修改authorized_keys的权限为644(centos系统才需要修改)
644:用户自己具有读和写权利,没有执行权;组用户和其他用户只有读的权利,没有写和执行权。
$>chmod 644 authorized_keys
- 最后一步,测试:ssh localhost
//第一次需要输入密码,exit退出再重新登录时就不需要密码了,成功!
$> ssh localhost
启动Hadoop
- 创建三个配置目录,内容等同于hadoop目录
${hadoop_home}/etc/local
${hadoop_home}/etc/pesudo
${hadoop_home}/etc/full
- 创建符号链接,让它指向你要使用的目录,启动对应的分布系统
//让符号链接指向hadoop,则采用的是伪分布模式
$> ln -s pesudo hadoop
- 对hdfs进行格式化
$>hadoop namenode -format
- 修改hadoop配置文件,手动指定JAVA_HOME环境变量(ubuto系统不存在这个问题,centos系统需要配置)
export JAVA_HOME=/soft/jdk
- 启动hadoop的所有进程(已经不推荐使用)
//启动所有进程
$>start-all.sh
//关闭所有进程
$>stop-all.sh
//推荐使用的方式
//启动分布式文件系统
[hdfs] start-dfs.sh stop-dfs.sh
NN //名称节点
DN //数据节点
2NN //辅助名称节点
//启动yarn模块
[yarn] start-yarn.sh stop-yarn.sh
RM //资源管理亲
NM //节点管理器
- 启动完成后,出现以下进程(命令:jps)
2624 DataNode //数据节点
2535 NameNode //名称节点
2744 SecondaryNameNode //辅助名称节点
2888 ResourceManager //资源管理器
2985 NodeManager //节点管理器
- 查看hdfs文件系统和创建目录
//查看hdfs
$>hdfs dfs -ls /
//新建文件夹
$>hdfs dfs -mkdir -p /user/centos/hadoop
- 在web端查看hadoop的文件系统
//localhost为自己配置的静态ip
http://localhost:50070/
//查看网络情况
$> netstat -ano | more
//hadoop的端口
50070 //namenode http port
50075 //datanode http port
50090 //2namenode http port
8020 //namenode rpc port
50010 //datanode rpc port
//在web端访问如果发现访问不了,估计是防火墙出现问题,需要对其进行操作
[cnetos 6.5之前的版本]
$>sudo service firewalld stop //停止服务
$>sudo service firewalld start //启动服务
$>sudo service firewalld status //查看状态
[centos7]
$>sudo systemctl enable firewalld.service //"开机启动"启用
$>sudo systemctl disable firewalld.service //"开机自启"禁用
$>sudo systemctl start firewalld.service //启动防火墙
$>sudo systemctl stop firewalld.service //停止防火墙
$>sudo systemctl status firewalld.service //查看防火墙状态
[开机自启]
$>sudo chkconfig firewalld on //"开启自启"启用
$>sudo chkconfig firewalld off //"开启自启"禁用