hadoop集群的安装与配置

1.安装和配置虚拟机

1.1安装VMwareWorkstation12pro虚拟机

1.2安装vmwaretools工具

2.Hadoop集群配置过程

2.1 集群中的机器,都要有的配置:

  • 安装jdk 7+,并配置好环境变量
  • Hadoop-2.x.x安装包,配置好Hadoop参数(重点1)
  • 都要安装SSH服务,如果没有安装ssh服务,则启动每台机器,分别安装ssh服务:
$ sudo apt-get install ssh		(ubantu)
$ sudo install ssh 或 ssh localhost	(centos)

2.2 config文件配置:

  • 将hadoop-2.2.0目录名改为hadoop
  • 配置环境变量:JAVA的环境变量和Hadoop的环境变量
$ sudo vi /etc/profile
  • 在profile文件环境变量配置部分,增加如下内容:
export HADOOP_HOME=/home/gao/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

#set environment of jkd and hadoop
exportJAVA_HOME=/usr/java/java-1.8.0-openjdk
exportHADOOP_HOME=/home/will/hadoop
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

2.3 测试环境变量是否配置正确:

$ javac -version
$ java -version
$ hadoop jar

2.4 在主文件夹下,创建如下的目录结构:
hdfsdata
- tmp
- name
- data

2.5 配置$HADOOP_HOME/etc/hadoop/下的多个配置文件:(附件)

$ cd hadoop/etc/hadoop/
$ vi hadoop-env.sh
$ vi core-site.xml
$ vi hdfs-site.xml
$ cp mapred-site.xml.template mapred-site.xml
$ vi mapred-site.xml
$ vi yarn-site.xml

3.克隆机器

3.1 将虚拟机cloud01关机.

3.2 选中hadoop01,然后鼠标右键,在出来的菜单中选择 管理—>克隆,然后按照提示操作即可

4.集群配置-网络配置

4.1 启动三台机器,分别配置固定ip。例如,我的三台机器ip分别为:

 192.168.106.137
 192.168.106.138
 192.168.106.139

4.2 测试网络连通性:在第一台机器的控制台窗口中,执行ping命令:

$ ping 192.168.106.138
$ ping 192.168.106.139

4.3 修改第二台机器的机器名为cloud02,第三台机器的机器名为cloud03。
在每台机器的控制器,执行命令:

$ sudo vi /etc/hostname

分别修改文件内容为cloud02和cloud03

4.4 设置每台机器的ip 与主机名的对应关系(在/etc/hosts 文件中存放的是域名与ip的对应关系):
注:请将原文件最上面的第二行127.0.1.1 删除掉,每台机器都要做

$ sudo vi /etc/hosts
  192.168.106.137 cloud01
  192.168.106.138 cloud02
  192.168.106.139 cloud03  

4.5 重启三台机器。在cloud01中,ping其它两台机器的机器名:

$ ping cloud02
$ ping cloud03

5.集群配置-安装和配置SSH无密码登录

原理:namenode 作为客户端,要实现无密码公钥认证,连接到服务端 datanode 上时,需要在 namenode 上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到 datanode 上。当 namenode 通过 ssh 连接 datanode 时,datanode 就会生成一个随机数并用namenode 的公钥对随机数进行加密,并发送给 namenode。namenode 收到加密数之后再用 私钥进行解密,并将解密数回传给datanode, datanode确认解密数无误之后就允许namenode 进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端 namenode 公钥复制到 datanode 上。

5.1 在每台机器上,执行如下命令:

$ ssh localhost
$ ssh exit	#记得最后通过这个命令退出ssh连接
# 会自动生成.ssh目录(如果存在.ssh文件夹,则应先删除.ssh(rm -rf .ssh)) 

或者

$ mkdir .ssh # 手工创建.ssh 目录

5.2 在namenode(master主机)上,使用如下命令生成公私钥:

$ ssh-keygen -t rsa	

然后一路回车,在.ssh下生成公私钥。

5.3 在namenode(master主机)上,将公钥加入授权文件:

$ cd .ssh
$ cat id_rsa.pub >> authorized_keys

5.4 将namenode(master主机)上的公钥分别加入cloud02和cloud03机器的授权文件(authorized_keys)中。
执行如下命令:

$ ssh-copy-id gao@cloud02
$ ssh-copy-id gao@cloud03

5.5 测试。在cloud01机器上,使用ssh分别连接cloud02和cloud03:

$ ssh cloud02
$ ssh cloud03

这时会发现不需要输入密码,直接就ssh连接上了这两台机器。

6.集群配置-格式化HDFS文件系统

6.1 在cloud01机器上(master主机)上修改slaves 文件:

$ cd hadoop
$ vi etc/hadoop/slaves      # 打开slaves 文件,写入下面三行
  cloud01
  cloud02
  cloud03

6.2 在cloud01(NameNode)上,运行下面的命令来格式化一个新的文件系统:

$ hdfs namenode -format

注:这个格式化只做一次。如果要重新格式化HDFS,则要将原来的$HADOOP_HOME下的hddata/name 和hddata/data 目录清空,重新格式化。

7.集群测试

7.1 使用如下命令启动 HDFS 文件系统:

$ start-dfs.sh 

7.2 这个命令将首先启动一个 masternode 中的 NameNode。然后它将启动在 slaves 文件中所提及到的所有机器中的 DataNode 服务。最后,它将启动第二个 NameNode。

7.3 HDFS 带有一个监控 web 控制台来验证安装以及监视 HDFS 集群。
它还能让用户探索 HDFS文件系统的内容。该 HDFS 监控控制台可以通过下面的 URL 进行访问:

http://{NAMENODE}:50070/

查看监控控制台检查是否能看到 HDFS 启动页面。这里,将{NAMENODE}替换为运行 HDFSNameNode 的节点的 IP 地址。

http://localhost:50070/ # NameNode URL 

7.4 另外,还可以使用如下的命令来获得 HDFS 状态的报告:

$ hadoop dfsadmin -report 

$ hdfs dfsadmin -report

查看文件块组成

$ hdfs fsck /-files -blocks 

7.5 运行下面的命令来启动 YARNservice 服务:

$ start-yarn.sh 

7.6 运行下面的命令来启动 MapReduceJobHistoryServer。这可以启用用于 MapReduce job历史的 web控制台:

$ mr-jobhistory-daemon.sh start historyserver # 启用历史服务 
$ mr-jobhistory-daemon.sh stop historyserver # 关闭历史服务 

7.7 通过 jps 命令列表显示进程,以检查安装情况。
Master 节点将列出 NameNode、 ResourceManager 和 JobHistoryServer 服务。
Slave 节 点 将 列 出 DataNode 和 NodeManager服务:

$ jps 

7.8 访问 http://{MASTER_NODE}:8188/,访问用于可用的 ResourceManager 的基于 web 的控制台页面。

http://localhost:8088/// Node Manager 和 Resource Manager 的 URL 

7.9 运行 pi 程序(蒙特卡罗程序):

$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 10 20 

7.10最后,使用如下的命令关闭 YARNservice 和 HDFSservice:

$ stop-yarn.sh 
$ stop-dfs.sh

8.在Hadoop上执行MR程序

8.1 启动HDFS集群:

$ start-dfs.sh

8.2 使用jps命令查看当前节点上运行的服务:

$ jps

8.3 将“单词记数”程序的输入数据文件(夹)上传到HDFS文件系统的根目录;

$ hdfs dfs -copyFromLocal ~/wordcount/wc-input /
$ hdfs dfs -ls /
$ hdfs dfs -ls /wc-input
$ hdfs dfs -cat /wc-input/sample.txt

8.4 启动yarn:

$ start-yarn.sh
$ jps

8.5 进入到"单词记数"程序.jar包所在的目录,执行以下命令,将作业提交给Hadoop执行:

$ cd ~/wordcount
$ hadoop jar wcone.jar com.xlw.WordCountDriver /wc-input /wc-output

8.6 查看运算结果:

$ hdfs dfs -cat /wc-output/part-r-00000

8.7 将运算结果文件下载到本地:

$ hdfs dfs -copyToLocal /wc-output ~/wordcount/wc-output2

8.8 关闭集群:

$ stop-yarn.sh
$ stop-dfs.sh

说明:如果想要重复运行,那么在每次运行程序前,要先将wc-output目录删除。

附件:

# 文件hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51

# 文件core-site.xml
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://cloud01:9000</value>
</property>
<property>
	<name>io.file.buffer.size</name>
	<value>131072</value>
	<description>执行读写操作时的缓冲区大小。应该是4096的倍数(4096 on Intel x86)</description>
</property>
<property>
	<name>hadoop.tmp.dir</name>
	<value>/home/will/hdfsdata/tmp</value>
</property>

# 文件hdfs-site.xml
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>cloud01:9001</value>
	<description>secondarynamenodehttp服务器地址和端口</description>
</property>
<property>
	<name>dfs.namenode.name.dir</name>
	<value>/home/will/hdfsdata/name</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>/home/will/hdfsdata/data</value>
</property>
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

# 文件mapred-site.xml:(只有模板文件,拷贝一份,改名为mapred-site.xml)
$ cp mapred-site.xml.template mapred-site.xml
# 配置内容如下:
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>cloud01:10020</value>
</property>
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>cloud01:19888</value>
</property>

# 文件yarn-site.xml
<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>
<!--将yarn.resourcemanager.hostname的值修改为master机器的ip地址-->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>cloud01</value>
</property>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值