> Linux集群 > Hadoop >

伪Hadoop伪分布式集群搭建

Hadoop伪分布式

一、准备工作

1、关闭防火墙

service iptables start

    立即开启防火墙,但是重启后失效。

service iptables stop

    立即关闭防火墙,但是重启后失效。

    如下命令是永久性操作,重启后生效。

chkconfig iptables on

    开启防火墙,重启后生效。

chkconfig iptables off

    关闭防火墙,重启后生效。

2、配置主机名

    注意安装hadoop的集群主机名不能有下划线。不然会出现找不到主机的问题,导致集群无法启动。

    配置主机名:

vim /etc/sysconfig/network
source /etc/sysconfig/network

    例如:

NETWORKING=yes
HOSTNAME=hadoop01

    配置完成,命令操作界面不会马上修改,需要重启机器才能更改。

    也可以使用如下命令,临时修改主机名。

hostname hadoop01

3、配置Hosts

    配置此功能,是为了解耦,如果每个服务中都写具体的ip地址,如果某台服务器的ip地址发生了改变,再次修改ip会是一个很大的工作量;如果在服务配置中使用ip的地方都改成主机名称的方法,那么当某台服务器的ip发生改变,只需要在/etc/hosts文件中更改对应的映射关系即可。

vim /etc/hosts

    填入内容格式如下:

127.0.0.1 localhost
::1 localhost
192.168.75.150 hadoop01
其他主机和ip 主机名
……

    此配置和Windows下配置hosts文件是一样的操作。

4、配置免密码互通

    生成自己的公钥和私钥,生成的公私钥将自动存放在/root/.ssh目录下。

    命令如下:

ssh-keygen

    把生成的公钥copy到需要互相通信的远程机器上。

    命令如下:

ssh-copy-id root@hadoop01

    此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。

    这里需要给本机发一个免密登录,hadoop在启动的时候,就不需要输入密码了,否则在启动的时候不管是HDFS还是yarn启动的时候都的输入密码。

ssh hadoop01

    通过上述命令远程连接,检验是否可以不需密码连接。

5、安装JDK

1.下载解压

    通过fz将jdk安装包上传到自己的管理目录。

    解压安装包

tar -zxvf [jdk安装包位置]

2.配置环境变量

    修改/etc/profile

    这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

vim /etc/profile

    在文件行尾加入如下配置后保存退出。

export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin

    注意:JAVA_HOME配置的jdk的目录,切记不要盲目照抄。

3.重新加载配置文件

    重新加载profile使配置生效,命令如下:

source /etc/profile

    环境变量配置完成,测试环境变量是否生效,使用如下命令,正常显示变量路径和java信息则配置正确。

echo $JAVA_HOME
java -version

二、伪分布式配置

1、下载安装hadoop

    通过fz将hadoop安装包上传到linux自己的管理目录,解压安装包。

tar -zxvf [hadoop安装包位置]

2、配置hadoop

    以下配置文件,均在hadoop-2.7.1/etc/hodoop/目录下。

1.修改hadoop-env.sh

    通过vim打开hadoop-env.sh。

vim [hadoop]/etc/hadoop/hadoop-env.sh

    主要是修改java_home的路径。

    在hadoop-env.sh的第27行,把export JAVA_HOME=${JAVA_HOME}修改成和环境变量中JAVA_HOME的路径相同即可。

    重新加载使修改生效。命令如下:

source hadoop-env.sh

2.修改core-site.xml

    此文件为核心配置文件,主要管理namenode的配置和文件存储位置的配置。

    通过vim打开core-site.xml文件。

vim [hadoop]/etc/hadoop/core-site.xml

    初次配置此文件中配置信息为空,需要在<configuration>标签中增加namenode配置、文件存储位置配置。配置信息如下:

<configuration>
<property>
<!--用来指定hdfs的master,namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/home/park/work/hadoop-2.7.1/tmp</value>
</property>
</configuration>

    第一个<value>标签中,需要注意主机名称,填写自己规划好的主机名称。

    第二个<value>标签中,需要规划自己的tmp目录的存放位置,按照自己的规划填写即可,千万不要使用Linux系统/tmp目录,因为这个目录Linux有自己的清除机制,会造成数据丢失。

3.修改hdfs-site.xml

    此文件为HDFS的配置文件,主要配置HDFS的存储副本数量。

    通过vim打开hdfs-site.xml:

vim [hadoop]/etc/hadoop/hdfs-site.xml

    此文件初次次配置配置信息也是空的,需要在<configuration>标签中增加要配置的内容,配置模版内容如下:

<configuration>
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

    此文件主要修改的也是<value>标签的内容,安装伪集群的话,将值配置为1即可。因为伪分布式只有一台服务器,无法实现分布式存储。

4.修改mapred-site.xml

    此目录主要配置的是maperd的运行平台。

    在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,此文件为配置模版文件,将其复制一个更名,将后缀.template去掉即可。操作命令如下:

cp mapred-site.xml.template mapred-site.xml

通过vim打开mapred-site.xml文件。命令如下:

vim [hadoop]/etc/hadoop/mapred-site.xml

此文件初次配置,配置内容也为空,将如下的模版信息填入即可,此配置是让mapreduce运行在yarn上。

<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

5.修改yarn-site.xml

    此文件是yarn的核心配置文件,主要管理yarn的配置以及NodeMannager获取数据的方式。

    通过vim打开yarn-site.xml 文件。命令如下:

vim [hadoop]/etc/hadoop/yarn-site.xml

    此文件第一次初次配置,配置内容也为空,配置模版如下:

<configuration>
<property>
<!--指定yarn的master,resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

    第一个<value>标签的值需要改为自己规划的主机名称,其他的不用做修改。

6.修改slaves

    此文件是配置自己的下属成员的。

    vim打开此文件,命令如下:

vim slaves

    打开文件发现,这是一个空文件,只需要在这个文件中添加自己下属的服务器主机名称即可,因为是伪集群,只有一台主机,所以这里只需输入自己的规划的主机名称即可,例如:

hadoop01

    输入完成,退出保存即可。

3、配置环境变量

    使用Hadoop和java一样,也许要配置环境变量,在/etc/profile文件中添加Hadoop的环境变量信息即可。

1.编辑/etc/profile

    使用如下命令打开/etc/profile文件:

vim /etc/profile
export HADOOP_HOME=/home/park/work/hadoop-2.5.2/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

    注意:HADOOP_HOME的值为Hadoop的安装目录,不要盲目照抄。

    PATH的值需要配置两个,一个bin的路径,一个sbin的路径,因为Hadoop中有两个命令目录,这两个命令目录都需要添加到环境变量中。

2.重新加载配置文件

    使用如下命令,重新加载配置文件:

source /etc/profile

    环境变量配置完成,测试环境变量是否生效。

echo $HADOOP_HOME

    出现Hadoop的安装路径信息,即为配置正确。

4、重启linux

    正常情况,配置完成的Hadoop不需要重启。如果Hadoop中一些配置文件不生效,可以重启Linux服务来解决此问题。为什么需要重启配置文件才起作用?原因暂时不明。

    重启命令如下,使用其中那个都可以:

reboot
init 6

三、启动Hadoop

1、格式化namenode

    在启动Hadoop之前需要进行一个格式化的操作,这个操作保证namenode能够正常的存储数据。

    进入hadoop/bin输入命令格式化namenode,命令如下:

hadoop namenode -format

    以前格式化的命令是下面这样的:

hdfs namenode -format

在格式化的时候,看到如下输出信息,则证明格式化成功。

Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted

 

2、启动hadoop

    在hadoop-2.7.1/sbin目录下有很多命令文件,进入此目录可以看到,在此目录下执行如下命令,可以启动整个Hadoop集群组件:

./start-all.sh

    在启动之后,输入如下命令:

jps

    可以看到5个Hadoop相关的进程,则证明启动成功。

3、关闭Hadoop

    在/home/app/hadoop-2.6.0/sbin目录下也同样存在关闭服务的命令,在此目录下输入如下命令,则关闭整个集群组件,停止服务。

./stop-all.sh

 

四、hdfs命令

hadoop fs -mkdir /user/trunk

hadoop fs -ls /user

hadoop fs -lsr /user   (递归的)

hadoop fs -put test.txt /user/trunk

hadoop fs -put test.txt .  (复制到hdfs当前目录下,首先要创建当前目录)

hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)

hadoop fs -cat /user/trunk/test.txt

hadoop fs -tail /user/trunk/test.txt  (查看最后1000字节)

hadoop fs -rm /user/trunk/test.txt

hadoop fs -rmdir /user/trunk

hadoop fs -help ls (查看ls命令的帮助文档)

 

五、通过HadoopWeb管理页面

    当Hadoop服务配置完成,正常重启,可以在别的pc上通过浏览器输入如下格式的地址,便可以访问Hadoop的Web管理页面。

    http://[server_ip]:50070

    如果访问不了有可能是服务器50070端口被关闭了。通过如下方式打开50070端口:

service iptables status #查询防火墙状态

service iptables start #开启防火墙

iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开通特定端口

iptables -I INPUT -p tcp --dport 80 -j DROP #关闭特定端口

service iptables save #保存配置

service iptables restart #重启防火墙

 

 


(责任编辑:IT)