hadoop+zookeeper+hbase 完全安装手册

 

安装环境:

1. 2台 namenode 10台 datanode

3. 安装目录:opt/software

jdk hadoop hbase zookeeper

4.. zookeeper 3台就可以了

jdk rpm -ivh jdk-8u91-linux-x64.rpm

 

1.  master1  修改hostname的操作:

1. 修改hostname -> http://www.cnblogs.com/dkblog/archive/2011/11/02/2233123.html

需要修改两处:一处是       ,另一处是/etc/hosts,只修改任一处会导致系统启动异常。首先切换到root用户。

1.1 vi /etc/sysconfig/network

用任一款你喜爱的编辑器打开该文件,里面有一行 HOSTNAME=localhost.localdomain (如果是默认的话),修改 localhost.localdomain 为你的主机名。

1.2  vi /etc/hosts

注: etc/hosts 这个文件是负责dns 解析的 将hostname 和 ip对应起来的  比如ping slave1 机器会知道对应的ip

在文件末尾加上 192.168.150.20 20-master1

reboot

!!!!!!!以root身份直接在/etc/ssh/sshd_config中找到#PermitRootLogin = yes ,将其去掉重启就可以了。

!!!!!!!发现winscp 调用putty不好用 直接启动putty就可以登陆

1.3 修改slave 的hostname

将192.168.150.23 -> slave11 ping 测试连接 master 和 slave 互ping hostname 如果通了 证明可以连通了

2.  SSH master 无密码登陆 所有slave

注: 部分例子中hadoop用户自动忽略成root用户

具体来讲就是 两步 : 1. 生成公钥私钥 2. 想免密码登陆谁就将公钥加到谁的author..keys中

2.1 SSH无密码原理 

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

总的来说就是用master的公钥在slave上加密,然后传回mater后用master自己的私钥解密建立连接 记住永远是要用自己的私钥解密

2.2 Master机器上生成密码对 

   在Master节点上执行以下命令

ssh-keygen –t rsa –P ''

  这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。

20142757_3tHd.png

查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

20142757_AUT9.png

 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 20142758_JmvV.png

2.3 设置SSH配置 

  用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

 20142758_lle8.png

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

  设置完之后记得重启SSH服务,才能使刚才设置有效。

service sshd restart

  退出root登录,使用普通用户验证是否成功。

ssh localhost

20142758_2Ymp.png

从上图中得知无密码登录本级已经设置完毕,接下来的事儿是

2.4把公钥复制所有Slave机器上。使用下面的命令格式进行复制公钥:

scp ~/.ssh/id_rsa.pub 23-slave11:~/

因为我之前能ping通 第一台slave机器 192.168.150.23 在hosts中命名为23-slave11

所以我直接用scp将公钥进行复制:

20142759_5mDG.png

2.5下面就针对这个23 这个slave进行配置:

1查看slave11 中是否有这个公钥

因为还没配置好,登陆的时候还是需要密码的20142759_0ObG.png

可以看到公钥已经存进去了 id_rsa.pub

2在/root/下面创建.ssh文件夹

mkdir ~/.ssh

然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700",用下面命令执行:

chmod 700 ~/.ssh

 20164535_iDZB.png

3)追加到授权文件"authorized_keys

  到目前为止Master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把Master的公钥追加到Slave11的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

  4)用root用户修改"/etc/ssh/sshd_config"

  具体步骤参考前面Master的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。

修改配置文件:

 用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。 

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

service sshd restart

3.  ssh 配置slave 免密码登陆 master

和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)

以slave11 登陆 master1 为例

3.1       首先创建slave11 自己的公钥和私钥

创建"Slave1.Hadoop"自己的公钥和私钥,并把自己的公钥追加到"authorized_keys"文件中。

1. 生成公钥私钥 钥匙对

ssh-keygen -t rsa -P ''

2 并把自己的公钥追加到"authorized_keys"文件中。用到的命令如下:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3. 追加到"Master.Hadoop"的"authorized_keys"中:

scp ~/.ssh/id_rsa.pub     20-master1:~/

 2)在"Master.Hadoop"服务器的操作 

  用到的命令如下:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

至此一个master slave对可以互相访问了

4.  Java 环境安装

4.1       安装jdk

注: 本例中所有的软件都安装在/opt/software/下面

下载jdk 1.8 本例中有机器上面有jdk的rpm包

我直接scp过来了

scp jdk-8u91-linux-x64.rpm 60.12.160.158:~

切到20-master1 直接 rpm –ivh jdk-8u91-linux-x64.rpm

jdk 1.8 会安装到/usr/java下面

4.2       配置环境变量

编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。

1)编辑"/etc/profile"文件 

vim /etc/profile

2)添加Java环境变量 

  在"/etc/profile"文件的尾部添加以下内容:

# set java environment

export JAVA_HOME=/usr/java/jdk1.8.0_91

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

3)使配置生效 

  保存并退出,执行下面命令使其配置立即生效。

source /etc/profile

4)使配置生效

java –version 发现jdk 还是 1.7 的

原因是原来机器上安装了openjdk 1.7  所以我们要先卸载openjdk

直接用 rpm -qa | grep java

查找安装过的java 包

然后用命令:

yum -y remove 卸载

比如:

20164537_p7cY.png

卸载完成后发现 java –version 已经不管用了

此后再安装 jdk 1.8

rpm –ivh jdk-8u91-linux-x64.rpm 就可以了

5.  Hadoop集群的安装

所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。

5.1       安装hadoop

安装hadoop到 /opt/software下

解压 hadoop.gz

tar -zxvf hadoop-2.5.2.tar.gz

给hadoop-2.5.2创建软链接

ln -s hadoop-2.5.2 hadoop

效果如下:

20164538_nkIr.png

5.2       配置hadoop

5.2.1 配置环境变量

把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:

# set hadoop path

export HADOOP_HOME=/opt/software/hadoop

export PATH=$PATH:$HADOOP_HOME/bin 

重启配置文件

Source /etc/profile

5.2.2 配置conf
1)配置hadoop-env.sh 和 yarn-env.sh

该"hadoop-env.sh"文件位于"/opt/software/hadoop/etc/hadoop"目录下。

在文件的末尾添加下面内容 JAVA_HOME

# set java environment

export JAVA_HOME=/usr/java/jdk1.8.0_91

20164541_rmor.png
yarn-env.sh:

也是配置JAVA_HOME

20164543_ZZ9h.png

Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分成了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

2)配置core-site.xml文件 

  修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。

    首先在hadoop根目录下创建一个tmp文件 备用 

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/opt/software/hadoop/tmp</value>

        <description>A base for other temporary directories.</description>

    </property>

<!-- file system properties -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://20-master1:9000</value>

    </property>

</configuration>

备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。

3)配置hdfs-site.xml 文件 

在master的命令行终端执行如下命令创建hadoop的数据文件保存目录及元数据保存目录:

1. mkdir /opt/software/hadoop/hadoopdata

2. mkdir /opt/software/hadoop/hadoopname

Vi hdfs-site.xml:

在文件的<configuration></configuration>加入如下内容,保存退出

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/opt/software/hadoop/hadoopdata/namenode</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/opt/software/hadoop/hadoopdata/datanode</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>21-master2:9001</value>

</property>

</configuration>

4)配置mapred-site.xml文件 

修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

<configuration>

        <property>

                <name>mapred.tasktracker.map.tasks.maximum</name>

                <value>240</value>

                <final>true</final>

        </property>

        <property>

                <name>mapred.tasktracker.reduce.tasks.maximum</name>

                <value>48</value>

                <final>true</final>

        </property>

<property>

      <name>mapreduce.map.memory.mb</name>

      <value>6000</value>

  </property>

  <property>

      <name>mapreduce.reduce.memory.mb</name>

      <value>8000</value>

  </property>

  <property>

      <name>mapreduce.map.java.opts</name>

      <value>-Xmx5900m</value>

  </property>

  <property>

      <name>mapreduce.reduce.java.opts</name>

      <value>-Xmx7900m</value>

  </property>

<property>

 

<name>mapreduce.framework.name</name>

 

<value>yarn</value>

 

</property>

 

</configuration>

 

效果如下:

20164544_wdk5.png

 

5)配置yarn-site.xml文件

 

 

 

<configuration>

 

<property>

 

<name>yarn.scheduler.minimum-allocation-mb</name>

 

<value>4096</value>

 

</property>

 

<!-- Site specific YARN configuration properties -->

 

<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.resource-tracker.address</name>

 

<value>20-master1:8025</value>

 

</property>

 

<property>

 

<name>yarn.resourcemanager.scheduler.address</name>

 

<value>20-master1:8030</value>

 

</property>

 

<property>

 

<name>yarn.resourcemanager.address</name>

 

<value>20-master1:8040</value>

 

</property>

 

<property>

 

<name>yarn.nodemanager.log-dirs</name>

 

<value>/opt/software/hadoop/logs/userlogs</value>

 

</property>

 

<property>

 

<name>yarn.nodemanager.vmem-check-enabled</name>

 

<value>false</value>

 

<description>Whether virtual memory limits will be enforced for containers</description>

 

</property>

 

<property>

 

<name>yarn.nodemanager.pmem-check-enabled</name>

 

<value>false</value>

 

<description>Whether virtual memory limits will be enforced for containers</description>

 

</property>

 

<property>

 

<name>yarn.nodemanager.vmem-pmem-ratio</name>

 

<value>4</value>

 

<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>

 

</property>

 

</configuration> 

 

6)配置slaves文件

 

23-slave11

24-slave12

25-slave13

slave4

slave5

slave6

slave7

slave8

slave9

slave10

 

注:原本是以ip地址的最后一组数字+slave编号命名的slave,但是发现名字太长了,所以该为直接slave+num了

 

 

 

7)格式化文件系统

 

bin/hdfs namenode -format  

 

注意:这里的格式化文件系统并不是硬盘格式化,只是针对主服务器hdfs-site.xmldfs.namenode.name.dirdfs.datanode.data.dir目录做相应的清理工作。

 

 

 

7)启动和停止服务

 

sbin/start-all.sh

 

sbin/stop-all.sh  

 

jps 查看进程

 

 hadoop dfsadmin –report 查看hadoop状态

 

 也可以进入 下面的namenod 和slave 查看进程起来了没有

 

 

 

6.  安装zookeeper

 

6.1.在namenode机器下,配置zookeeper,先解压安装包,使用命令:

 

  1. tar -zxvf zookeeper-3.4.4.tar.gz      

 

6.2.进入zookeeper的配置目录,首先把zoo_sample.cfg重命名一下,可以重新复制一遍,使用命令:

 

  1. cp zoo_sample.cfg zoo.cfg      

 

6.3. gedit    zoo.cfg ,添加如下内容:

 

  1.                dataDir=/home/cloud/project/tmp/zookeeper/data  
  2. server.1 = datanode1:7000:7001  
  3. server.2 =datanode2:7000:7001  
  4. server.3 =datanode3:7000:7001  

 

6.4.把zookeeper分别远程拷贝datanode1,datanode2,datenode3,使用如下命令:

 

  1. scp –r zookeeper-3.4.4  datanode1:/home/cloud/project  
  2. scp –r zookeeper-3.4.4  datanode2:/home/cloud/project  
  3. scp –r zookeeper-3.4.4  datanode3:/home/cloud/project  

 

6.5.分别在刚才的datanode节点/home/cloud/project/tmp/zookeeper/data目录下,新建文件myid,然后使用命令

 

  1. vim.tiny  myid  
     

 

   分别在datanode1,datanode2,datanode3的myid中写入对应的server.n中的n,即分别是1,2,3.

 

6.开启zookeeper服务,在三台datanode机器的zookeeper安装目录下使用命令:

 

bin/zkServer.sh start  

 

7.  安装hbase

 

Hbase 需要装在1个master上 和剩下的datanode上面

 

 

 

7.1 解压缩hbase的软件包,使用命令

 

1.   tar -zxvf hbase-0.94.2.tar.gz  
 

 

7.2进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即

 

1.   JAVA_HOME=/usr/java/jdk1.7.0_09/   

 

加入变量:

 

1.   export  HBASE_MANAGES_ZK=false  

 

7.3  编辑hbase-site.xml ,添加配置文件:

 

1.   <property>  

 

2.   <name>hbase.rootdir</name>  

 

3.   <value>hdfs://namenode:9000/hbase</value>  

 

4.   </property>  

 

5.   <property>  

 

6.   <name>hbase.cluster.distributed</name>  

 

7.   <value>true</value>  

 

8.   </property>  

 

9.   <property>  

 

10.  <name>hbase.zookeeper.quorum</name>  

 

11.  <value>datanode1,datanode2,datanode3</value>  

 

12.  </property>  

 

13.  <property>  

 

14.  <name>hbase.zookeeper.property.dataDir</name>  

 

15.  <value>/home/cloud/project/tmp/zookeeper/data</value>  

 

16.  </property> 
 

 

7.4. 编辑配置目录下面的文件regionservers. 命令:

 

1.   vim.tiny    regionservers   

 

加入如下内容:

 

1.   datanode1  

 

2.   datanode2  

 

3.   datandoe3  
 

 

7.5. 把Hbase复制到其他机器,命令如下:

 

1.   scp -r hbase-0.94.2   datanode1:/home/cloud/project  

 

2.   scp -r hbase-0.94.2   datanode2:/home/cloud/project  

 

3.   scp -r hbase-0.94.2   datanode3:/home/cloud/project  
 

 

7.6. 开启hbase服务。命令如下:

 

1.   bin/start-hbase.sh     

 

可以使用bin/hbaseshell 进入hbase自带的shell环境,然后使用命令version等,进行查看hbase信息及建立表等操作。   

 

转载于:https://my.oschina.net/u/2561483/blog/678545

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值