编程开发 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 云计算 -> hadoop集群搭建详述 -> 正文阅读
 

[云计算]hadoop集群搭建详述[第1页]

1、集群搭建策略

   分析:
我手上只有3台电脑,两台华硕笔记本i7、i3的处理器,一台台式机Pentium4处理器。为了更好的测试zookeeper的功能,
我们总共需要6台ubuntu(Ubuntu 14.04.3 LTS)的主机。以下是我的主机分布策略:
i7:开启4台ubuntu虚拟机分别是
虚拟机名 内存       硬盘  网络连接
master      1G        20G    桥接
master2    1G        20G    桥接
rm 512M    20G    桥接
slave3 1G        20G    桥接
i3: 安装ubuntu系统 ,作为Datanode节点slave1
P4: 安装ubuntu系统 ,作为Datanode节点slave2
2、修改hosts文件
    所有机器统一使用ubuntu这个账号,并建立hadoop组,将ubuntu添加至hadoop组中。
     添加用户:
su   //切换至 root
useradd -d /home/ubuntu -m ubuntu    //添加密码
passwd ubuntu   //设置密码
    添加组:
groupadd hadoop
将ubuntu添加至hadoop:
usermod -g hadoop ubuntu 
    查看当前用户所在的组:
exit ubuntu
groups
显示
hadoop
   编辑hosts:
sudo nano /etc/hosts
   修改成如下内容
127.0.0.1localhost
127.0.1.1ubuntu
#根据实际ip修改
192.168.0.7 master
192.168.0.10 master2
192.168.0.4 slave1
192.168.0.9 slave2
192.168.0.3 slave3
192.168.0.8 rm
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
3、ssh无密登陆
(1)master
需要无密登录所有的机器
(2)master2
需要无密登录master
(3)rm
需要无密登录slave1 slave2 slave3
(4)无密登陆实现
以master登陆到master2为例
当前位置master,执行
如未安装ssh,执行
sudo apt-get install openssh-server
成功后,执行
ssh-keygen -t rsa
一路enter即可
cd ~
cd .ssh
ls 
authorized_keys id_rsa id_rsa.pub
其中 id_rsa是私钥 本机保存不动,id_rsa.pub是公钥需要交给mater2
给id_rsa.pub备份
cp id_rsa.pub id_rsa_m.pub
        首先给自己一份
cat id_rsa_m.pub >> authorized_keys
然后发给master2
scp id_rsa_m.pub ubuntu@master2:~/.ssh
切换到master2,执行
cd ~
cd .ssh
cat id_rsa_m.pub >> authorized_keys
切换master,执行
ssh master2
成功登陆到了master2
ubuntu@master2:
exit
ubuntu@master:
3、安装jdk
jdk版本: jdk-8u91-linux-x64.tar.gz   117.118M
将jdk-8u91-linux-x64.tar.gz拷贝至master的/tmp目录下,解压至 /home/ubuntu/solf下,
所有与hadoop有关的软件我们都将安装到这个目录
    开始解压
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /home/ubuntu/solf
cd ~/solf
ls
  jdk1.8.0_91
   添加环境变量,编辑/etc/profile,在文件末尾添加如下内容
JAVA_HOME = /home/ubuntu/solf/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/jre
source /etc/profile
ubuntu@master:~/solf$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
        表示jdk安装成功
4、安装hadoop
hadoop版本:hadoop-2.7.2.tar.gz   207.077M
将hadoop-2.7.2.tar.gz解压至 /home/ubuntu/solf
tar -zxvf hadoop-2.7.2.tar.gz -C /home/ubuntu/solf
ls
hadoop-2.7.2 jdk1.8.0_91
     添加环境变量,编辑/etc/profile,在文件末尾添加如下内容
HADOOP_INSTALL =/home/ubuntu/solf/hadoop-2.7.2
export PATH=$PATH:$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
source /etc/profile
ubuntu@master:~/solf$ hadoop version
Hadoop 2.7.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41
Compiled by jenkins on 2016-01-26T00:08Z
Compiled with protoc 2.5.0
From source with checksum d0fda26633fa762bff87ec759ebe689c
This command was run using /home/ubuntu/solf/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
表示hadoop安装成功
5、配置hadoop环境
   hadoop可以配置为三种模式:独立、伪分布、全分布(集群)模式
   为了让我们的hadoop能够在各种模式中切换,此处需做一个链接操作
   cd ~
   cd solf
   为了以后cd时方便,此处给hadoop-2.7.2做一个链接
   ln -s hadoop-2.7.2 hadoop
   
   cd ~/solf/hadoop/etc/
   ls
   hadoop
   此时只有一个hadoop目录,此目录是hadoop默认的配置文件的目录,如果要做模式切换一个目录肯定是不行的
   cp -r hadoop hadoop-full    //集群模式
   cp -r hadoop hadoop-local   //独立模式
   cp -r hadoop hadoop-presudo   //伪分布模式
   rm -r hadoop                     //删除原来的目录
   如果当前我想使用集群模式则(其他模式同理)
   ln -s hadoop-full hadoop
   ls -l
         lrwxrwxrwx 1 ubuntu ubuntu   11 Aug  3 07:21 hadoop -> hadoop-full
   drwxr-xr-x 2 ubuntu hadoop 4096 Aug  1 09:55 hadoop-full
drwxr-xr-x 2 ubuntu hadoop 4096 Aug  1 09:55 hadoop-local
drwxr-xr-x 2 ubuntu hadoop 4096 Aug  1 09:55 hadoop-presudo
   此时默认的配置文件指向了hadoop-full
   
   下面来详细配置hadoop-full中的文件:
    (1)hadoo-env.sh
    只需修改一行,JAVA_HOME配置成/etc/profile里面 JAVA_HOME的路径,最好使用绝对路径
export JAVA_HOME=/home/ubuntu/solf/jdk1.8.0_91
(2)core-site.xml
<!-- 指定hdfs的nameservice为ns1,ns1中包含了两个namenode,保证一个namenode宕机了能够顺利由另一个接管-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定定位临时文件的目录,默认指向/tmp,该目录会在重启后被清空-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ubuntu/solf/hadoop/tmp</value>
</property>
<!-- 指定zookeeper安装的位置,此处将在slave1,slave2,slave3上安装zk,注意安装zk的机器数一定是大于等于3的奇数-->
<property>
<name>ha.zookeeper.quorum</name>
<value>slave1:2181,slave2:2181,slave3:2181</value>
</property>
(3)hdfs-site.xml
   <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>master:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>master:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>master2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>master2:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://slave1:8485;slave2:8485;slave3:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/ubuntu/solf/hadoop-2.7.2/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!--防止出现不允许远程读写hdfs-->    
<property>    
<name>dfs.permissions</name>
<value>false</value>    
</property>  
<!--namenode每三秒发一个心跳信号-->    
<property>    
<name>dfs.heartbeat.interval</name> 
<value>3</value>    
</property>
<!--心跳机制recheck的间隔-->    
<property>    
<name>dfs.namenode.heartbeat.recheck-interval</name> 
<value>35000</value>    
</property>
(4)mapred-site.xml
原目录下没有mapred-site.xml,需要cp
cp mapred-site.xml.template mapred-site.xml
修改如下:
<!--指定MapReduce使用的框架是yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)yarn-site.xml
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>rm</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(6)slaves 指定datanode的主机名
slave1
slave2
slave3
   
6、将jdk和hadoop环境发送至所有的机器
cd ~
scp -r solf ubuntu@master2:/home/ubuntu
scp -r solf ubuntu@rm:/home/ubuntu
scp -r solf ubuntu@slave1:/home/ubuntu
scp -r solf ubuntu@slave2:/home/ubuntu
scp -r solf ubuntu@slave3:/home/ubuntu
     
cd /etc
su
切换root用户
root@master:/etc
scp profile root@master2:/etc
scp profile root@rm:/etc
scp profile root@slave1:/etc
scp profile root@slave2:/etc
scp profile root@slave3:/etc
分别进入到各台机器中执行
source /etc/profile
java -version
hadoop version
如果都能正确显示,则说明各台机器上的jdk和hadoop环境都搭建好了
7、安装配置zookeeper
zookeeper版本:zookeeper-3.4.5.tar.gz   16.018M
将zookeeper-3.4.5.tar.gz解压至 /home/ubuntu/solf
tar -zxvf zookeeper-3.4.5.tar.gz -C /home/ubuntu/solf
ls
hadoop-2.7.2 jdk1.8.0_91 zookeeper-3.4.5
进入slave1
(1)修改配置
cd  ~/solf/zookeeper-3.4.5/conf
cp zoo_sample.cfg zoo.cfg
编辑
nano zoo.cfg
修改
dataDir=/home/ubuntu/solf/zookeeper-3.4.5/tmp
文件末尾添加
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
(2)创建tmp文件
cd  ~/solf/zookeeper-3.4.5
mkdir tmp
cd tmp 
touch myid
echo 1 > myid
查看
cat myid
1
表示配置成功
(3)将配置好的zookeeper-3.4.5发送至slave2、slave3
cd  ~/solf
scp -r zookeeper-3.4.5  ubuntu@slave2:~/solf
scp -r zookeeper-3.4.5  ubuntu@slave3:~/solf
修改myid
slave2下:
echo 2 > myid
slave3下:
echo 3 > myid
至此,六台机器的hadoop集群就配置完成了。
启动集群:
严格按照下面的启动顺序
(1)启动zk
在slave1 slave2 slave3下一次执行
cd ~/solf/zookeeper-3.4.5/bin
./zkServer.sh start
查看状态
./zkServer.sh status
JMX enabled by default
Using config: /home/ubuntu/solf/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
查看进程
jps
51858 Jps
51791 QuorumPeerMain
(2)启动journalnode
在master下,执行
hadoop-daemons.sh start journalnode
slave2: starting journalnode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-journalnode-slave2.out
slave1: starting journalnode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-journalnode-slave1.out
slave3: starting journalnode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-journalnode-slave3.out
在slave1 slave2 slave3上分别查看进程
51958 JournalNode
52007 Jps
51791 QuorumPeerMain
(3)格式化HDFS
如果hdfs从未格式化则在master下,执行
hdfs namenode -format
然后将 hadoop下的tmp文件发送给master3的hadoop目录下
cd ~/solf/hadoop
scp tmp ubuntu@master2:~/solf/hadoop
(4)格式化zk
   在master下,执行
如果zookeeper从未格式化则在master下,执行
hdfs zkfc -formatZK
(5)启动hdfs
   在master下,执行
   start-dfs.sh
master2: starting namenode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-namenode-master2.out
master: starting namenode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-namenode-master.out
slave2: starting datanode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-datanode-slave2.out
slave1: starting datanode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-datanode-slave1.out
slave3: starting datanode, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-datanode-slave3.out
Starting journal nodes [slave1 slave2 slave3]
slave2: journalnode running as process 2299. Stop it first.
slave1: journalnode running as process 2459. Stop it first.
slave3: journalnode running as process 51958. Stop it first.
Starting ZK Failover Controllers on NN hosts [master master2]
master: starting zkfc, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-zkfc-master.out
master2: starting zkfc, logging to /home/ubuntu/solf/hadoop-2.7.2/logs/hadoop-ubuntu-zkfc-master2.out
查看本机进程
jps
14481 NameNode
14885 Jps
14780 DFSZKFailoverController
12764 FsShell
查看slave1\2\3的java上的java 进程
jps
51958 JournalNode
52214 Jps
52078 DataNode
51791 QuorumPeerMain
(6)启动yarn
   在rm下,执行
start-yarn.sh
jps
6965 ResourceManager
7036 Jps
查看slave1\2\3的java 进程
jps
52290 NodeManager
51958 JournalNode
52410 Jps
52078 DataNode
51791 QuorumPeerMain
   若所有进程都如上所示,则hadoop集群就真正运行起来了,可在浏览器中输入
    192.168.0.7:50070 查看集群的情况
测试集群:
1、测试namenode切换
(1)访问192.168.0.7:50070
显示 'master:9000'(active)
访问192。168.0.10:50070
显示'master2:9000'(standby)
表明当前namenode由master管理,master2作为备用
(2)在master下kill掉namenode进程
kill -9 14481
jps
   14944 Jps
14780 DFSZKFailoverController
12764 FsShell
再次启动namenode进程
hadoop-daemon.sh start namenode
            再执行(1)中的操作,显示如下:
显示'master:9000'(standby)
'master2:9000'(active)
 如此证明:zookeeper在namenode宕机的情况下能够正常切换备用的namenode机器
2、验证hdfs文件存储系统
查看hdfs的文件结构
hadoop fs -ls -R /
创建solf文件夹
hadoop fs -mkdir /solf
上传文件
cd 到文件所在目录
hadoop fs -put spark-2.0.0-bin-without-hadoop.tgz /solf
查看hdfs的文件结构
hadoop fs -ls -R /
drwxr-xr-x   - ubuntu supergroup          0 2017-08-04 07:16 /solf
-rw-r--r--   3 ubuntu supergroup  114274242 2017-08-04 07:16 /solf/spark-2.0.0-bin-without-hadoop.tgz
        上传成功!
3、运行wordcount程序
用eclipse生成wordcount.jar或者使用hadoop自带的例子
将输入文件上传至hdfs
cd 到文件所在目录
hadoop fs -put file*.txt /input
cd到wordcount.jar所在目录
hadoop jar wordcount.jar  com.will.hadoop.WordCount  /input /wcout
17/08/04 07:42:01 INFO client.RMProxy: Connecting to ResourceManager atrm/192.168.0.8:8032
17/08/04 07:42:02 WARN mapreduce.JobResourceUploader: Hadoop command-line optionparsing not performed. Implement the Tool interface and execute your application withToolRunner to remedy this.
17/08/04 07:42:02 INFO input.FileInputFormat: Total input paths to process : 3
17/08/04 07:42:03 INFO mapreduce.JobSubmitter: number of splits:3
17/08/04 07:42:03 INFO mapreduce.JobSubmitter: Submitting tokens for job:job_1501854022188_0002
17/08/04 07:42:10 INFO impl.YarnClientImpl: Submitted applicationapplication_1501854022188_0002
17/08/04 07:42:11 INFO mapreduce.Job: The url to track the job:http://rm:8088/proxy/application_1501854022188_0002/
17/08/04 07:42:11 INFO mapreduce.Job: Running job: job_1501854022188_0002
17/08/04 07:42:26 INFO mapreduce.Job: Job job_1501854022188_0002 running in ubermode : false
17/08/04 07:42:26 INFO mapreduce.Job:  map 0% reduce 0%
17/08/04 07:42:48 INFO mapreduce.Job:  map 100% reduce 0%
17/08/04 07:43:10 INFO mapreduce.Job:  map 100% reduce 100%
17/08/04 07:43:11 INFO mapreduce.Job: Job job_1501854022188_0002 completedsuccessfully
打开/wcout/part-r-00000
I 2
apple 4
car 4
cat 4
exit 4
feel 2
first 3
good 4
good,so 2
gula
hadoop 3
happy 4
happy! 2
hello 1
is 3
my 3
pande 4
peer 4
quit 4
test 1
testxx 2
this 3
测试成功!
由此可见,hadoop集群搭建成功!
接下来将陆续引入HBase、Hive至本集群......
  云计算 最新文章
NLP06-Gensim源码简析[字典]
pandas中使用三元表达式
Docker基础笔记
大数据工程师必备技能图谱
ServiceComb中的数据最终一致性方案
63. Unique Paths II
手把手教你建github技术博客by hexo
hadoop datanode结点不启动导致dfs控制台显
spark on yarn架构简介
mapreduce程序本地模式调试
上一篇文章      下一篇文章      查看所有文章
加:2017-08-06 16:22:54  更:2017-08-06 16:24:50 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年11日历
2018-11-13 2:15:57
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库