Hadoop2.7 完全分布式搭建文档

1. 集群信息如下:

主机名

Hadoop角色

Hadoop jps命令结果

Hadoop用户

Hadoop安装目录

master

server152

Master

slaves

NameNode

DataNode

JobTracker

TaskTracker

SecondaryNameNode

创建相同的用户的组名:hadoop。

安装hadoop-2.7.2时使用hadoop用户,并且hadoop的文件夹归属也是hadoop:hadoop

/usr/local/hadoop

slave1

server153

slaves

DataNode

TaskTracker

slave2

server154

slaves

DataNode

TaskTracker

注:master即使master又是slave.

3台64位centos6.5 + Hadoop2.7.2 + java7

 

2. 配置服务器的主机名

Namenode节点对应的主机名为server152

Datanode节点对应的主机名分别为server153、server154

 

3. 编辑每台机器的hosts, 以及主机名hostname。 (以server153为例子) 
[root@server153 ~]# vi /etc/hosts
192.168.1.152 server152
192.168.1.153 server153
192.168.1.154 server154

 

[root@server153 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=server153
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no

 

4. 创建用户组

 groupadd hadoop  添加一个组

 useradd hadoop -g hadoop  添加用户

 

5. 安装hadoop

    下载:http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

  解压到/usr/local/hadoop/hadoop2.7.2

  hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

[root@server153 ~]# cat /etc/profile
export HADOOP_HOME=/usr/local/hadoop/hadoop2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

#执行source /etc/profile使配置文件生效
[root@server153 ~]# source /etc/profile

#修改所有者改为hadoop
[root@server153 ~]#chown -R hadoop:hadoop /usr/local/hadoop/ 
 
5. SSH设置无密码验证

 a)安装SSH,并让master免验证登陆自身服务器、节点服务器 

#执行下面命令,让master节点能够免验证登陆自身服务器
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa >> ~/.ssh/authorized_keys
export HADOOP\_PREFIX=/usr/local/hadoop/hadoop2.7.2

 

    b) 让主结点(master)能通过SSH免密码登录两个子结点(slave)

#为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样当master就可以顺利安全地访问这两个slave结点了
# 在slave的机器上执行一下命令
scp hadoop@server152:~/.ssh/id_dsa.pub  ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#设置权限,否则ssh依然需要输入密码
chmod -R 700 ~/.ssh 

 

 6. 安装Hadoop

    解压到/usr目录下面,改名为hadoop。

    hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

export HADOOP_HOME=/usr/local/hadoop/hadoop2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
 7. 配置Hadoop

    配置之前,需要在server152本地文件系统创建以下文件夹:

/usr/loacal/hadoop/name
/usr/loacal//hadoop/data
/usr/loacal//hadoop/temp

    这里要涉及到的配置文件有7个:

~/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
~/hadoop-2.7.2/etc/hadoop/yarn-env.sh
~/hadoop-2.7.2/etc/hadoop/slaves
~/hadoop-2.7.2/etc/hadoop/core-site.xml
~/hadoop-2.7.2/etc/hadoop/hdfs-site.xml
~/hadoop-2.7.2/etc/hadoop/mapred-site.xml
~/hadoop-2.7.2/etc/hadoop/yarn-site.xml

    core-site.xml:

<configuration>
	<property>
	  <name>fs.defaultFS</name>
	  <value>hdfs://server152:9000</value>
	</property>
        <property>  
	  <name>hadoop.tmp.dir</name>  
	  <value>file:/usr/local/hadoop/fs/temp</value>  
	  <description>Abase for other temporary directories.</description>  
        </property>
</configuration>

    hdfs-site.xml:

<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hdfs://server152:9001</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/fs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/local/hadoop/fs/data</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
</configuration>

    mapred-site.xml:

<configuration>
	<property>
	  <name>mapreduce.framework.name</name>
	  <value>yarn</value>
	</property>
	<property>
	  <name>mapreduce.jobhistory.address</name>
	  <value>server152:10020</value>
	</property>
	<property>
	  <name>mapreduce.jobhistory.webapp.address</name>
	  <value>server152:19888</value>
	</property>
</configuration>

    

 yarn-site.xml:

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>server152:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>server152:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>server152:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>server152:8033</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>server152:8088</value>
  </property>
</configuration>

 

  slave.xml:
server153
server154

    

 复制到hadoop 到其他节点:
scp -r /usr/local/hadoop/* hadoop@server153:/usr/local/hadoop/
scp -r /usr/local/hadoop/* hadoop@server154:/usr/local/hadoop/
    
 7.启动hadoop

    a) 格式化namenode

[hadoop@server152 hadoop2.7.2] ./bin/hdfs namenode  -format

#看到提示:
#“Exitting with status 0″ 成功,
#“Exitting with status 1″ 失败。
    

    b) 启动hdfs

[hadoop@server152 hadoop2.7.2]./sbin/start-dfs.sh

#server152上面运行的进程有:NameNode  SecondaryNameNode
#server153和server154上面运行的进程有:DataNode
#使用ps -ef|grep hadoop 查看进程
    c) 启动yarn
[hadoop@server152 hadoop2.7.2]./sbin/start-yarn.sh
#YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性
#server152上面运行的进程有:NameNode  SecondaryNameNode ResourceManager
#server153和server154上面运行的进程有:DataNode NodeManager
#启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode

[hadoop@server152 hadoop2.7.2]$ jps
 
8.检测运行事例

查看集群状态:./bin/hdfs dfsadmin -report

出现 

Live datanodes (2):

这个信息才表示集群建立成功

成功启动后,可以访问 Web 界面 http://192.168.1.152:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

启动 YARN 可以通过 Web 界面查看任务的运行情况:http://192.168.1.152:8088/cluster

 
9 . 操作hdfs 的命令

hadoop fs

这个命令可以列出所有的 hdfs的子命令的帮助界面。基本上语法和linux上的文件操作类似

例如 : 复制本地文件到 hdfs 系统 

hadoop fs -copyFromLocal *.log hdfs://192.168.1.151:9000/data/weblogs

命令详解,官方文档

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

引用:http://blog.csdn.net/remote_roamer/article/details/50579874

scp -r /usr/local/hadoop/* hadoop@server153:/usr/local/hadoop/
scp -r /usr/local/hadoop/* hadoop@server154:/usr/local/hadoop/
       9 . 操作hdfs 的命令

hadoop fs

这个命令可以列出所有的 hdfs的子命令的帮助界面。基本上语法和linux上的文件操作类似

例如 : 复制本地文件到 hdfs 系统 

hadoop fs -copyFromLocal *.log hdfs://192.168.1.151:9000/data/weblogs

命令详解,官方文档

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

引用:http://blog.csdn.net/remote_roamer/article/details/50579874

hadoop fs

这个命令可以列出所有的 hdfs的子命令的帮助界面。基本上语法和linux上的文件操作类似

例如 : 复制本地文件到 hdfs 系统 

hadoop fs -copyFromLocal *.log hdfs://192.168.1.151:9000/data/weblogs

命令详解,官方文档

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

引用:http://blog.csdn.net/remote_roamer/article/details/50579874

猜你喜欢

转载自shiguanghui.iteye.com/blog/2314840