首先,尼玛哥是一名研究生,可以说很多学习的知识都是来源于同门师兄弟,本着将自己学习到的东西以博客的形式分享到网络上,不仅仅可以让自己回顾,也可以帮助需要学习的小伙伴们,供大家一同学习。
首先,hadoop 环境的搭建需要在linux的环境下,那么,现在,咱们需要将linux的基本网络设置已经配置完毕,注意,每一次配置完成,建议要给系统做一个快照,以免不必要的情况发生后,整个系统都崩盘,这时候就后悔莫及了~
废话不多说,开始讲解如何搭建单节点的hadoop 伪分布集群
开始前请大家注意了:linux 的操作系统,默认主机名为localhost,此处尼玛哥一直是以localhost 进行讲解,但是大家在学习安装伪分布单节点的hadoop过程当中,注意修改localhost的名字,不然在最后的集群运行当中会出错,和系统本身的 127.0.0.1 对应的localhost 的IP 产生冲突,导致最后无法实现集群搭建!
首先:hadoop 伪分布环境搭建分为三大步
一 .JDK 安装
二.SSH 配置
三.hadoop 环境配置
#cd /etc/profile.d
#ls
在profile.d文件夹通过Vi命令生成一个java.sh 文件
#vi java.sh
在 Java.sh 文件中,咱们需要设置的是这些
JAVA_HOME=/usr/java/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export JAVA_HOME PATH CLASSPATH
wq保存退出
7. 利用命令 #source /etc/profile.d/java.sh 使刚才的配置文件生效
8.利用命令#vi /etc/hosts ,来修改hosts文件,但是需要知道虚拟机配置的静态IP ,前边我们已经配置过,
是 192.168.159.22 locahost (你的主机的名字,在安装linux的时候,已经自己起名过,博主起的名字是kkc,而在此处是localhost,大家需要注意,不能和 127.0.0.1 localhost 重名,这样最后会导致出错)
#groupadd hadoop 创建hadoop用户组
#useradd -g hadoop hadoop 新建hadoop用户并增加到hadoop用户组中
#passwd hadoop hadoop用户密码,为hadoop
10、Hadoop使用端口比较多,建议关闭防火墙避免出现不必要的问题,生产环境中可以对相应端口做安全控制。先需要关闭防火墙
Centos6.5自带防火墙是iptables防火墙,没有firewall防火墙。
通过命令:#service iptables status 查看防火墙状态
(1)#chkconfig iptables off 这种方式是永久性关闭,系统重启后不会复原。
(2)#service iptables stop这种方式是即时生效,系统重启后会复原。
咱们使用命令1 ,但是,需要重新启动, 为了方便,不用关机,咱们1,2命令同时,可以再虚拟机运行过程中关闭防火墙。
使用完命令后,咱们检查一下,防火墙是否关闭
1 配置SSH实现无密码验证配置,首先切换到刚创建的hadoop用户下。
由于hadoop需要无密码登录作为datanode的节点。
部署单节点的时候,当前节点既是namenode又是datanode,所以此时需要生成无密码登录的ssh。方法如下:
#su hadoop
#cd
2 、创建.ssh目录,生成密钥
#mkdir .ssh
#ssh-keygen -t rsa 注意,ssh与keygen之间是没有空格的,中间的询问部分,咱们用回车跳过,相当于设置免密码登录
3 、切换到.ssh目录下,进行查看公钥和私钥
#cd .ssh
#ls
4、将公钥复制到日志文件里。查看是否复制成功
#cp id_rsa.pub authorized_keys
#ls
5、查看日记文件具体内容
#vi authorized_keys
6、退回到/home/hadoop/,来赋予权限
#cd ..
#chmod 700 .ssh 将.ssh文件夹的权限赋予700
#chmod 600 .ssh/* 将.ssh文件夹里面的文件(id_rsa、id_rsa.pub、authorized_keys)的权限
赋予600
7、切换到root用户下,安装ssh插件(openssh)
#su root
#yum -y install openssh-clients
8、切换到/home/hadoop/,测试ssh无密码访问
#su hadoop
#ssh localhost
#yes
首先,切换到/usr/java/ ,再切换到root用户下,再 /root/java
#cd /usr/java
#su root
3、查看上传好的hadoop-2.2.0-x64.tar.gz,并解压
#ls
#tar axvf hadoop-2.2.0-x64.tar.gz
4、将文件名hadoop-2.2.0修改为hadoop,并查看
#mv hadoop-2.2.0 hadoop
#ls
将刚改名的hadoop文件,权限赋给hadoop用户,并查看权限
#chown -R hadoop:hadoop hadoop
#ls -l5、创建一个hadoop数据目录 ,将整个data目录权限赋予给hadoop用户
#mkdir -p /data/dfs/name
#mkdir -p /data/dfs/data
#mkdir -p /data/tmp
#chown -R hadoop:hadoop hadoop /data
#ls -l /data6、修改hadoop对应的配置文件
切换到hadoop用户,切换到hadoop目录
#su hadoop
#cd hadoop
查看下etc/hadoop的配置文件
#cd etc/
#ls
#cd hadoop/
#ls
7.接下来的步骤,需要十分仔细,是修改hadoop的配置文件了!会尽量详细的解释下这些文件的用处以及如何配置首先,修改etc/hadoop/core-site.xml配置文件,添加如下信息
#vi core-site.xml
(1)配置HDFS(hadoop)的分布式文件系统的地址及端口号
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 注意,本机的名称localhost需要大家更改-->
</property>
(2)配置HDFS路径的存放数据的公共目录<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/tmp</value>
</property>
(3)注意:由于在hadoop1.0中引入了安全机制,所以从客户端发出的作业提交者全变成了hadoop,不管原始提交者是哪个用户,为了解决该问题,引入了安全违章功能,允许一个超级用户来代替其他用户来提交作业或者执行命令,而对外来看,执行者仍然是普通用户。
配置设置为任意客户端
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
配置设为任意用户组
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
#wq 保存退出!
8.修改etc/hadoop/hdfs-site.xml配置文件,添加信息。
通过命令 #vi hdfs-site.xml
(1)配置namenode文件目录
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/dfs/name</value>
<final>true</final>
</property>
(2)配置datanode文件目录
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dfs/data</value>
<final>true</final>
</property>
(3)配置数据块副本和HDFS权限
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
#wq保存并退出
9、修改etc/hadoop/mapred-site.xml配置文件,添加如下信息。
#cp mapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
配置mapreduce环境为yarn
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
#wq保存退出
10 、修改etc/hadoop/yarn-site.xml配置文件。
#vi yarn-site.xml
为了能够运行mapreduce程序,我们需要让.nodemanger在启动时加载shuffle。
所以需要下面设置
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
#wq 保存退出
11、修改etc/hadoop/slaves,添加如下信息。即slaves文件
#vi slaves
现在是伪分布式单节点集群,所以datanode和namedata在一个节点上。
12、设置总结 : jdk环境变量配置是放在/etc/profile.d hadoop环境变量配置是放在/etc/profileHadoop环境变量
切换到root用户下,修改/etc/profile文件
#su root
不是HADOOP_HOME=/usr/java/hadoop-2.2.0 ,因为前面更改名字了
#wq 保存并退出
注意 : jdk环境变量配置是放在/etc/profile.d hadoop环境变量配置是放在/etc/profile
13、使配置文件生效
#source /etc/profile
第四、测试hadoop运行
1、切换到hadoop用户,退回到hadoop目录下。
#su hadoop
#cd ..
#cd ..
#ls
2、格式化namenode
#bin/hadoop namenode -format
3 启动集群(每次开机时候,都要启动)
#sbin/start-all.sh
4、查看集群进程
#jps
5.打开本地的hosts文件,修改设置,然后,保存,退出。
添加 192.168.159.22 localhost(注意,你们的电脑的用户名称是什么,就相应的写什么,比如,博主的是 kkc ) 到其中
7、 最后,现在是来验证hadoop是否安装成功
在Windows上可以通过 http://localhost:50070 访问WebUI来查看NameNode,集群、文件系统的状态。这里是HDFS的Web页面
由于,博主的电脑设置的http//kkc:50070
OK ,单节点的环境搭建成功!
参考博客------