热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop2.7.3+Hbase1.1.9集群搭建

一、1. 搭建三个Ubuntu系统(master,node1,node2节点都要操作)1.修改主机名:gedit  etchostname   改为masternode1node2

一、

1.  搭建三个Ubuntu系统

(master,node1,node2节点都要操作)

1.修改主机名:

gedit  /etc/hostname    改为master/node1/node2


2.将普通用户改为root用户

执行sudo  passwd root,执行后会提示你设置密码,请自行设置需要的密码,切记一定要记住设置的密码,如下图所示:

Hadoop 2.7.3+Hbase1.1.9 集群搭建

此步为额外步骤,可以不做(目的是使用root用户登录,方便之后的操作)输入以下命令cd /usr/share/lightdm/lightdm.conf.d/ 进入目录/usr/share/lightdm/lightdm.conf.d下,然后执行命令sudo gedit 50-unity-greeter.conf(注执行完该命令会弹出一个文本编辑窗口,见下图),对50-unity-greeter.conf文件进行编辑

在打开的文本编辑窗口中,添加以下信息,来设置登陆时可以选择的用户登录,如下图所示:

Hadoop 2.7.3+Hbase1.1.9 集群搭建

user-session=ubuntu
greeter-show-manual-login=true

all-guest=false

二、

1. 配置ip

(master,node1,node2节点都要操作)

gedit /etc/hosts   编辑为:

Hadoop 2.7.3+Hbase1.1.9 集群搭建

重启

三、

1.  jdk,hadoop配置:

在home下创建一个文件夹hadoop:用于存放jdk,hadoop,hbase:

在hadoop目录下安装jdk:apt-get install jdk8

在hadoop下解压hadoop-2.7.3.tar.gz:tar   -zxvf  hadoop-2.7.3.tar.gz

对hadoop进行配置:

编辑hadoop-env.sh(修改JAVA_HOME的配置)

sudo gedit hadoop-env.sh

export JAVA_HOME=/home/hadoop/tools/jdk7

export HADOOP_PID_DIR=/home/hadoop/pids

编辑yarn-env.sh,在底部增加

export JAVA_HOME=/home/hadoop/tools/jdk7

export YARN_PID_DIR=/home/hadoop/pids

编辑slaves文件,在底部增加

master

slave1

slave2

 

编辑core-site.xml

    fs.defaultFS

    hdfs://master:9000

    hadoop.tmp.dir

    /home/hadoop/temp

 

编辑hdfs-site.xml

 

dfs.replication

该数值为slave节点数 -->

    3

 

 

 

dfs.namenode.name.dir

    file:/home/hadoop/dfs/name

    true

 

 

 

dfs.datanode.data.dir

    file:/home/hadoop/dfs/data

 

 

编辑yarn-site.xml

 

yarn.nodemanager.aux-services

mapreduce_shuffle

 

yarn.nodemanager.aux-services.mapreduce.shuffle.class

org.apache.hadoop.mapred.ShuffleHandler

 

yarn.resourcemanager.hostname

    master

 

 

编辑mapred-site.xml

默认没有该文件

        mapreduce.framework.name

        yarn

        true

 

 

 

 

 

配置用户环境变量

sudo gedit~/.bashrc

在末尾加上:

 

#Hadoop

exportHADOOP_PREFIX="/home/hadoop/tools/hadoop2.6"

exportPATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

exportHADOOP_COMMON_HOME=${HADOOP_PREFIX}

exportHADOOP_HDFS_HOME=${HADOOP_PREFIX}

exportHADOOP_MAPRED_HOME=${HADOOP_PREFIX}

exportHADOOP_YARN_HOME=${HADOOP_PREFIX}

 

#setjava environment

exportJAVA_HOME=/home/hadoop/tools/jdk7

exportJRE_HOME=/home/hadoop/tools/jdk7/jre

 

exportMAHOUT_HOME=/home/hadoop/tools/mahout-distribution-0.9

exportMAVEN_HOME=/home/hadoop/tools/maven3.2

exportPATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$MAHOUT_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

exportSCALA_HOME=/home/hadoop/tools/scala2.10

exportPATH=.:$PATH:$SCALA_HOME/bin

 

exportSPARK_HOME=/home/hadoop/tools/spark1.4

exportPATH=.:$PATH:$SPARK_HOME/bin:$SPARK_HOME:sbin

 

exportHBASE_HOME=/home/hadoop/tools/hbase1

exportPATH=.:$PATH:$HBASE_HOME/bin

使用source更新下.bashrc文件:source ~/.bashrc

hbase配置:(master)

在hadoop目录下解压

编辑hbase-env.sh,在底部增加

#The java implementation to use.  Java1.7+ required.

exportJAVA_HOME=/home/hadoop/tools/jdk7

exportHBASE_MANAGES_ZK=true

export HBASE_PID_DIR=/home/hadoop/pids

 

编辑regionservers文件,在底部增加

master

slave1

slave2

Hadoop 2.7.3+Hbase1.1.9 集群搭建

 

编辑hbase-site.sh,在底部增加

       hbase.rootdir

       hdfs://master:9000/hbase

 

       hbase.cluster.distributed

       true

 

  hbase.master

  master:60010

 

  hbase.zookeeper.quorum

  master,node1,node2

 

  zookeeper.znode.parent

  /hbase

 

关闭防火墙

 sudo ufw disable (关闭防火墙重启虚拟机生效)

 

安装SSH服务(建立无密码登陆本机和其他节点,各节点之间传送文件)

安装openssh-server;(node1,node2,master)

sudo apt-getinstall ssh

 

 

创建ssh-key,这里我们采用rsa方式;(node1,node2,master)

ssh-****** -trsa

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

(master)进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;

   cd ~/.ssh

cat id_rsa.pub>> authorized_keys

 

 

(node1,node2):将生成的 id_rsa.pub追加的master节点的authorized_keys下,命令如下:

scp ~/.ssh/ id_rsa.pub [email protected]:/home/a.txt将id_rsa.pub 的内容拷贝到a.txt中

cat /home/a.txt >> authorized_keys 再将a.txt的内容追加到 authorized_keys中

注:若scp权限不够,修改/etc/ssh/sshd_config  将PermitRootLogin ***改为PermitRootLogin yes

 

(master)scp~/.ssh/authorized_keys [email protected]:~/.ssh/

              scp~/.ssh/authorized_keys [email protected]:~/.ssh/

 

 

 

3. 登录其他节点;

ssh node1

ssh node2

ssh master

master节点下使用ssh node1可进入node1

 Hadoop 2.7.3+Hbase1.1.9 集群搭建

若不需要密码直接就可以进入,为成功

 

( 注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。退出命令;exit)

 

ssh 必须安装并且保证sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。

 

附ssh部分命令:

重启SSH  

/etc/init.d/ssh restart

确认sshserver是否启动

ps -e | grep ssh

Hadoop 2.7.3+Hbase1.1.9 集群搭建

如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。

1.  将hadoop传送给node1,node2节点:(在master上操作)

  scp -r  /home/hadoop [email protected]:/home/

  scp -r /home/hadoop  [email protected]:/home/

启动hadoop(master)

1.    1.第一次启动需要在master 执行format

2. bin/hdfs namenode -format

Hadoop 2.7.3+Hbase1.1.9 集群搭建

 2.在master启动服务

     sbin/start-all.sh

Hadoop 2.7.3+Hbase1.1.9 集群搭建

 3.在master 验证启动进程:

Hadoop 2.7.3+Hbase1.1.9 集群搭建

   4.在slave 验证启动进程:

  5.打开浏览器输入:http:// master:8088 可查看相关的应用运行情况。

Hadoop 2.7.3+Hbase1.1.9 集群搭建

6. 打开浏览器输入:http:// master:50070  可查看hdfs目录

Hadoop 2.7.3+Hbase1.1.9 集群搭建

7.测试

bin/hdfs dfs -ls /

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir -p /user/micmiu/wordcount/in

 

创建三个文件(内容相同)

micmiu-01.txt

micmiu-02.txt

micmiu-03.txt


上传三个文件

bin/hdfs dfs -put micmiu*.txt /user/micmiu/wordcount/in

 

启动wordcount

bin/hadoop jar   ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jarwordcount  /user/micmiu/wordcount/in  /user/micmiu/wordcount/out

Hadoop 2.7.3+Hbase1.1.9 集群搭建

   查看结果输出out文件

bin/hdfsdfs -cat /user/micmiu/wordcount/out/part-r-00000

Hadoop 2.7.3+Hbase1.1.9 集群搭建

启动hbase(master)

 在浏览器中输入http://192.168.16.128:16030/rs-status,如图则配置成功:

 Hadoop 2.7.3+Hbase1.1.9 集群搭建

Hadoop 2.7.3+Hbase1.1.9 集群搭建



1. 附录:遇到的部分问题总结

1. slave节点的DataNode自动关闭问题

原因:Namenode上namespaceID与datanode上namespaceID不一致。

每次namenodeformat会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。

解决方案:

(1)停掉集群服务

  (2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/

  (3)格式化namenode.

(4)重新启动集群。

 

2.     NameNode结点不能启动

 jps查看结点启动情况没有NameNode结点

一种原因是在core-site.xml中指定了如下配置:

  
    hadoop.tmp.dir
    /tmp/hadoop/hadoop-${user.name}
  

但是tmp会在启动的时候清空,而dfs的数据就会变得不一致,导致启动失败,可以重新更改位置:

  
    hadoop.tmp.dir
    /var/hadoop/hadoop-${user.name}
  

然后执行: hadoop namenode -format  命令(由于namenode数据存储目录变更,namenode需要重新格式化)

重启后即可。

 

 

3. 运行wordcount时权限不足

解决方案:

在配置hdfs-site.xml中增加配置代码:

dfs.permissions.enabled

false

 

 

4. 解除安全模式

解决方案:

   hadoop dfsadmin -safemode leave

 

5.ssh免密不成功:

首先要修改主机 和ssh连接到的远程机 的配置文件:

vi  /etc/ssh/sshd_config

(要确保这些字符前无注释符号“#”)

RSAAuthentication  yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication yes

PeimitEmptyPasswords yes

然后查看各节点的authorized_keys是否包含三个节点的私钥信息,如果缺失,重新传送

6.环境配置文件添加错误,导致无法进入root,一些操作命令不能执行,解决办法

输入命令export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

之后gedit命令就可以使用了

将错的文件改回来就可以了

注:一个用户下对应着一个自己的环境配置文件,








推荐阅读
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了在树莓派上启用root账户和禁用休眠的方法。通过修改密码和执行命令,可以启用root账户并设置密码。同时,还介绍了如何切换到root用户和锁定root账户。此外,还介绍了如何修改其他用户的用户名和密码。最后,还介绍了如何永久禁用树莓派的休眠功能。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
author-avatar
zjy135781012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有