Hadoop分为三种配置模式:独立模式(standalone|local),伪分布模式(Pseudodistributed mode),完全分布式(full distributed)
在正式的配置之前先说一说独立模式,其实我们安装完Hadoop,将环境变量配置好,这时Hadoop的配置就是独立模式,使用的是本地的文件系统,不需要启动单独的进程。如下图就是独立模式的文件系统(其实就是本地文件系统):
伪分布模式需要我们自己手动配置,下面是具体的配置过程,友情提示:小心小心小心!!!
进入${HADOOP_HOME}/etc/hadoop目录(cd /soft/hadoop/etc/hadoop),修改如下配置文件:
$> nano core-site.xml //进入后删除里面的注释,配置如下
fs.defaultFS
hdfs://localhost/
dfs.replication
1
//这里需要注意,在上面我们并没有看到mapred-site.xml文件,而是一个名为mapred-site.xml.template,我们需要复制一个出来,然后配置就可以了
$> cp mapred-site.xml.template mapred-site.xml
mapreduce.framework.name
yarn
yarn.resourcemanager.hostname
localhost
yarn.nodemanager.aux-services
mapreduce_shuffle
我们知道Hadoop集群需要一个根节点去管理很多的子节点,假如我们每登录一个子节点都要输入密码验证,那效率将会非常低下,所以就需要配置一种免密登录的模式,无需输入密码就能登录。ssh就是这样一种机制。
$> yum list installed | grep ssh
sshd: 是否开启守护进程(daemon)
$> ps -Af | grep sshd
//rsa 是一种不可逆算法,它会在家目录下的./ssh文件夹下生成公私秘钥文件
$> ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在家目录下会生成一个.ssh文件夹:
$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys
644:用户自己具有读和写权利,没有执行权;组用户和其他用户只有读的权利,没有写和执行权。
$>chmod 644 authorized_keys
//第一次需要输入密码,exit退出再重新登录时就不需要密码了,成功!
$> ssh localhost
${hadoop_home}/etc/local
${hadoop_home}/etc/pesudo
${hadoop_home}/etc/full
//让符号链接指向hadoop,则采用的是伪分布模式
$> ln -s pesudo hadoop
$>hadoop namenode -format
export JAVA_HOME=/soft/jdk
//启动所有进程
$>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 //节点管理器
2624 DataNode //数据节点
2535 NameNode //名称节点
2744 SecondaryNameNode //辅助名称节点
2888 ResourceManager //资源管理器
2985 NodeManager //节点管理器
//查看hdfs
$>hdfs dfs -ls /
//新建文件夹
$>hdfs dfs -mkdir -p /user/centos/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 //"开启自启"禁用