hadoop伪分布式安装
1. 环境搭建:
一:修改Hostname
1. 临时修改hostname:
[root@localhost Desktop]# hostname sysware.com
这种修改方式,系统重启后就会失效。
2. 永久修改hostname:
想永久修改,应该修改配置文件 /etc/sysconfig/network。
[[email protected] ~] vim/etc/sysconfig/network
打开文件后:
NETWORKING=yes #使用网络
HOSTNAME=bigdata-senior01.chybinmy.com #设置主机名
配置Host:
[root@bigdata-senior01 ~] vim /etc/hosts
添加hosts: 192.168.187.129 sysware.com
3. 关闭防火墙
永久关闭:chkconfig iptables off
临时关闭:service iptables stop
4. 关闭selinux
selinux是Linux一个子安全机制,学习环境可以将它禁用。
vim/etc/sysconfig/selinux
二:安装JDK
注意:Hadoop机器上的JDK,最好是Oracle的JavaJDK,不然会有
些问题,比如可能没有JPS命令。 如果安装了其他版本的JDK,卸载掉。
三:Hadoop伪分布式模式安装:
1. Hadoop所用的用户设置
创建一个名字为hadoop的普通用户:
[root@bigdata-senior01 ~]# useradd hadoop
[root@bigdata-senior01 ~]#passwd 123456
给hadoop用户sudo权限:
[root@bigdata-senior01 ~]# vim /etc/sudoers
设置权限,学习环境可以将hadoop用户的权限设置的大一些,但是生产环境一定要注意普通用户的权限限制。
root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL
注意:如果root用户无权修改sudoers文件,先手动为root用户添加写权限。
[root@bigdata-senior01 ~]# chmod u+w /etc/sudoers
切换到hadoop用户:
[root@bigdata-senior01 ~]# su- hadoop
[hadoop@bigdata-senior01 ~]$
创建存放hadoop文件的目录:
[hadoop@bigdata-senior01 ~]$ sudo mkdir /opt/modules
将hadoop文件夹的所有者指定为hadoop用户
如果存放hadoop的目录的所有者不是hadoop,之后hadoop运行中可能会有权限问题,那么就讲所有者改为hadoop。
[hadoop@bigdata-senior01 ~]# sudo chown -R hadoop:hadoop /opt/modules
2. 解压Hadoop目录文件
复制hadoop-2.5.0.tar.gz到/opt/modules目录下。
解压hadoop-2.5.0.tar.gz
[hadoop@bigdata-senior01 ~]# cd /opt/modules
[hadoop@bigdata-senior01 hadoop]# tar -zxvf hadoop-2.5.0.tar.gz
3. 配置Hadoop
配置Hadoop环境变量:
[hadoop@bigdata-senior01 hadoop]# vim /etc/profile
追加配置:
export HADOOP_HOME="/opt/modules/hadoop-2.5.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行:source /etc/profile 使得配置生效
验证HADOOP_HOME参数:
[hadoop@bigdata-senior01 /]$ echo $HADOOP_HOME
/opt/modules/hadoop-2.5.0
配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数:
[hadoop@bigdata-senior01 ~]$ sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME参数为:
export JAVA_HOME="/opt/modules/jdk1.7.0_67"
配置core-site.xml:
[[email protected]~]{HADOOP_HOME}/etc/hadoop/core-site.xml
配置:
<property>
<name>fs.defaultFS</name>
<value>hdfs://sysware.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。
默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
创建临时目录:
[hadoop@bigdata-senior01hadoop-2.5.0]$ sudo mkdir -p /opt/data/tmp
将临时目录的所有者修改为hadoop:
[hadoop@bigdata-senior01hadoop-2.5.0]$ sudo chown –R hadoop:hadoop /opt/data/tmp
4. 配置、格式化、启动HDFS
配置hdfs-site.xml:
[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/data/tmp/dfs/data</value>
</property>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
格式化HDFS:
[hadoop@bigdata-senior01 ~]$hdfs namenode –format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:
格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/opt/data的所有者改为hadoop。
[[email protected] hadoop-2.5.0]$ sudo chown -R hadoop:hadoop /opt/data
查看NameNode格式化后的目录
[hadoop@bigdata-senior01 ~]$ ll /opt/data/tmp/dfs/name/current
启动节点:
1.${HADOOP_HOME}/sbin/hadoop-daemon.shstart namenode
2.${HADOOP_HOME}/sbin/hadoop-daemon.shstart datanode
3.${HADOOP_HOME}/sbin/hadoop-daemon.shstart secondarynamenode
JPS命令查看是否已经启动成功,有结果就是启动成功了。
5. 配置、启动YARN
配置mapred-site.xml
默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。
添加配置如下:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.7.31:8088</value>
</property>
</configuration>
· yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
· yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。
启动节点:
${HADOOP_HOME}/sbin/yarn-daemon.sh startresourcemanager
${HADOOP_HOME}/sbin/yarn-daemon.sh startnodemanager
查看是否启动成功:
YARN的Web客户端端口号是8088,通过http://192.168.100.10:8088/可以查看。