本文源自:/linxizhifeng/p/7207655.html
1. 系统环境
1.1. 软件版本
下表为本系统环境所安装的软件的版本信息:
1.2. 网络配置
总共7台服务器和一个VIP,详细信息如下:(主机名看下是否合法和能ping通,如果未配置dns强烈建议用IP,或者在每台机器hosts文件写上所有IP的主机名)
2. 目的
掌握hadoop的安装和部署HDFS,Hbase,Hive等组件。
3. Hadoop简介
Hadoopt是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,这样可以流的形式访问文件系统中的数据。详细介绍请参见:
/wiki/Hadoop
/view/908354.htm
/
/killme/archive//06/05/206043.html
4. HDFS安装部署。
4.1. 安装准备
4.1.1. 机器准备
本例stage2环境如下:
NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。
热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。
冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。
另请根据需要配置hostname或dns。另外,zookeeper最好使用独立server。
4.1.2. Disable IPV6
cat /proc/sys/net/ipv6/conf/all/disable_ipv6 为0 则启动 IPV6
如果你的环境是启动IPV6的,请走以下3步:
n 在各节点上修改/etc/sysctl.conf
在文件末尾添加:
n 修改/etc/modprobe.conf (可略)
确保文件中包括以下两条:
n 修改/etc/ sysconfig/network
确保NETWORKING_IPV6=no。
n 修改完后需要重启机器
重启后,通过命令:
# cat /proc/sys/net/ipv6/conf/all/disable_ipv6
查看是否已经disable。如果已经disable,结果是1。
4.1.3. Jdk安装
略
4.1.4. 创建用户
Hadoop需要统一用户,这使用的是oracle账号。
4.2. 介质下载
我们需要安装的组件是cloudera hadoop,下载网址:
官网
我们需要的组件是hadoop,zookeeper,hbase和hive。
4.3. 安装HDFS Cluster
4.3.1. 复制解压
复制下载好的压缩包到需要安装的所有服务器指定目录,并解压修改目录名。我们的环境下的hadoop及相关组件解析后如下:
4.3.2. SSH设置
设置从两台namenode无密码登录到其它5台datanode。
n生成密钥
执行生成rsa密钥的命令:
这样就生成了一对公钥和私钥,私钥保留在NameNode上,公钥需要分发给其他各datanode节点。注意,不要输入密码,否则NameNode启动的时候连接每个节点都需要你输入密码,当DataNode很多时,这是个灾难。
n分发公钥
由于两个NameNode节点都需要访问各datanode节点,因此我们这里上传到datanode的认证文件分别命名为authorized_keys和authorized_keys2。
Hadoop001上执行:
Hadoop002上执行:
此时,可以从两台namenode上使用oracle账号无密码登录到各datanode服务器。
4.3.3. 环境变量设置:
修改~/.bashrc增加如下内容:
4.3.4. HDFS配置
HDFS可以在单机上部署进行模拟,本文不做该配置的介绍
本文仅做cluster的配置介绍。
HDFS的配置文件均放在$hadoop/conf目录下。(新版本可能在$hadoop/etc/hadoop/以下配置7台服务器都相同。
nhadoop-env.sh
定义hadoop环境变量增加下面2行
core-site.xml
定义HDFS的NameNode地址和端口。
nmapred-site.xml
定义MapReduce的JobTracker的地址和端口。
Map-reduce的参数配置,推荐值为(本部分暂时没有优化,这部分请略过):
nhdfs-site.xml
定义文件复制份数。
<property>
<name>dfs.http.address</name>
<value>192.168.63.200:50000</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>192.168.63.202:51000</value>
</property>
dfs.http.address:web管理监控端口,采用默认端口(namenode:50070,secondary:50090)时可以省略该配置
注意:
1) 在两台namenode上建立以下目录
/opt/hadoop/name
2) 在两台datanode上建立以下目录
/opt/hadoop/data/dfs
nmasters
定义Secondary NameNode的地址
注:masters文件用于指定secondary的主机而不是namenode,slaves用于指定datanode和tasktracker,
namenode由core-site.xml fs.default.name指定,jobtracker由mapred-site.xml mapred.job.tracker指定
nslaves
定义DataNode的地址,可以是主机名或者IP。
n配置同步
将以上修改过的5个配置文件,复制到其它6台机器。
4.3.5. 启动HDFS
在NameNode的$hadoop安装目录下,执行如下命令:
可以在各个节点上运行jps命令查看是否启动成功:
同时可访问HDFS监控页面:http://192.168.63.200:50070/dfshealth.jsp查看各节点状况。
5. 安装ZooKeeper
在Hadoop的复制解压部分已经完成安装。这部分介绍zookeeper的配置。
5.1. 配置ZooKeeper
n修改zookeepr/conf/zoo.cfg
配置里面的server是zookeeper服务器的主机名。
n将zookeeper目录复制到各个zookeeper节点上
我们的环境共3台zookeeper,复制到这3台即可。
n新建目录
在各zookeeper服务器上新建dataDir中配置的目录,并添加myid文件,里面内容是该节点对应的server号,如上例hadoop003对应的myid文件内容就是:
echo "1" >/opt/hadoop/zookeeperdata/myid
5.2. 启动zookeeper
在各zookeeper节点上运行zkServer.sh start。
6. Hbase的安装
6.1. 安装Hbase
安装Hbase需要先安装好hadoop和ZooKeeper。
Hadoop的复制解压部分已经完成安装。这部分介绍Hbase的配置。
6.2. 配置Hbase
n修改hbase/conf/hbase-site.xml
红色部分是可能需要修改的,更多配置项请参考:
/book.html#configuration
n修改hbase/conf/hbase-env.sh
添加如下4行内容:
n 修改hbase/conf/log4j.properties
修改如下内容
n在conf/regionservers中添加所有datanode的节点
添加以下内容:
6.3. 启动Hbase
通过Hbase的安装目录执行bin/start-hbase.sh和bin/stop-hbase.sh 脚本启动和停止HBase服务。
启动方法:
报错
如果jdk没问题可能你下载的包不对 需要 -bin-tar.gz 而不是src
7. Hive的安装
7.1. 安装Hive
Hadoop的复制解压部分已经完成安装。这部分介绍Hive的配置。
7.2. 创建hive的hdfs目录
在namenode的hadoop安装目录下的bin目录下执行创建操作:
7.3. 配置conf下的hive-default.xml
找到hive.zookeeper.quorum,配置为如下所示:
7.4. 复制jar包到Hadoop的lib下
第一台服务器都要执行:
创建hive表:
在hive提示符下输入:
7.5. 启动Hive JDBC server
到Hive的安装目录,启动Hive服务。
8. Hadoop环境启动顺序
8.1. 启动HDFS
在NameNode的$hadoop安装目录下,执行如下命令:
可以在各个节点上运行jps命令查看是否启动成功:
同时可访问HDFS监控页面:http://hadoop001:50070/dfshealth.jsp查看各节点状况。
8.2. 启动zookeeper
在各zookeeper节点上运行zkServer.sh start。
8.3. 启动Hbase
通过Hbase的安装目录执行bin/start-hbase.sh和bin/stop-hbase.sh 脚本启动和停止HBase服务。
启动方法:
可以在各个节点上运行jps命令查看是否启动成功,hadoop003~hadoop007上是否有HRegionServer,hadoop001上是否有HMaster:
同时可访问HDFS监控页面:http://hadoop001:60010/ 查看是否所有的datanode和zookeeper都活着。
8.4. 启动Hive JDBC server
到Hive的安装目录,启动Hive服务。
9. Hadoop环境关闭顺序
9.1. 关闭Hive JDBC Server
用jps命令找到RunJar进程kill掉
9.2. 关闭Hbase
通过Hbase的安装目录执行bin/stop-hbase.sh停止HBase服务,会出现等待的提示符,等待结束才可以执行下一步
9.3. 关闭zookeeper
在各zookeeper节点上运行zkServer.sh stop
9.4. 关闭HDFS
在NameNode的$hadoop安装目录下,执行如下命令:
可以在各个节点上运行jps命令查看是否关闭成功
10. 常见问题
10.1. Namenode非正常关闭
在所有的hadoop环境机器上用jps命令,把所有的进程列出,然后kill掉,再按照启动顺序启动
10.2. Datanode非正常关闭
l 在namenode上启动HDFS
运行hadoop/bin/start-all.sh
l 如果Datanode同时是zookeeper,还需要启动zookeeper
在该datanode上运行zookeeper/bin/zkServer.sh start。
l 在namenode上启动Hbase
运行hbase/bin/start-hbase.sh
10.3. 停止一台非master的服务器
l 在该台服务器上运行:
hadoop/bin/hadoop-daemon.sh stop datanode
hadoop/bin/hadoop-daemon.sh stop tasktracker
hbase/bin/hbase-daemon.sh stop regionserver
l 在http://hadoop001:50070/dfshealth.jsp 查看该节点是否已经变成dead nodes,变成dead nodes之后,就可以停止该台服务器
在刚停止服务的时候,看到的截图如下:
当停止服务成功,看到的截图如下:
l 重启服务器以后,在hadoop001上运行,启动服务:
hadoop/bin/start-all.sh
hbase/bin/start-hbase.sh
11. 监控端口
11.1. Namenode监控端口(hadoop001):
60010,60000,50070,50030,9000,9001,10000
11.2. zookeeper监控端口(hadoop003,hadoop004,hadoop005)
2181
11.3. Datanode监控端口(hadoop003,hadoop004,hadoop005,hadoop006,hadoop007)
60030,50075
坚持到无能为力,拼搏到感动自己