hadoop笔记

弄几台机器,做互通,我用的是,HoopMaster,slave001,slave002,slave003,slave004

一、安装JAVA

1、安装Java,建议用这个版本。

yum install java-1.8.0-openjdk-devel

2、配置环境变量

vi /etc/profile
#在文件结尾加入
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

二、安装Hadoop

1、下载hadoop
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

解压到/usr/local/hadoop/

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

在/usr/local/hadoop/etc/hadoop/hadoop-env.sh的结尾也添加上面的hadoop环境变量,JAVA 的环境变量也加一下。

如果服务器ssh有端口,请修改这句,export HADOOP_SSH_OPTS="-p 22222" #ssh端口

vi /usr/local/hadoop/etc/hadoop/core-site.xml
在<configuration>中添加下面的代码
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://HadoopMaster:9000</value>
   </property>

vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
还在<configuration>中添加如下代码
<property>
        <name>dfs.namenode.http-address</name>
        <value>HadoopMaster:50070</value>
</property>
<property>
        <name>dfs.namenode.name.dir</name>
        <value>/hadoop/name</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>1</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>/hadoop/data</value> #这个地方就是分步式硬盘的路径,找那个真正存数据的大的盘
</property>

vi /usr/local/hadoop/etc/hadoop/workers
在这个里面添加你的slaves机器

slave001
slave002
slave003
slave004
等,一行一个。

在/usr/local/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash


HDFS_DATANODE_USER=root

#HADOOP_SECURE_DN_USER=hdfs
HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash


YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

把hadoop目录分发到slave001,slave002,slave003,slave004上

在master上格式化存储     hdfs namenode -format

启动hadoop
start-dfs.sh
start-yarn.sh

在命令行里面输入 jps
可以看到HadoopMaster里面多了一个

SecondaryNameNode
NameNode
Jps

在Slave里面
slave001
slave002
slave003
slave004
多了一个DataNode

可以通过http://HadoopMaster:16010/,这个查看hadoop

 

 三、安装Habse


3、安装HBase
HBase下载 http://archive.apache.org/dist/hbase/
http://archive.apache.org/dist/hbase/hbase-1.3.6/hbase-1.3.6-bin.tar.gz

vi /etc/profile
export PATH这行追加/usr/local/hbase/bin

vi /usr/local/hbase/conf/hbase-env.sh
在底部追加
export JAVA_HOME =/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64,其中java-1.7.0-openjdk是你的jdk版本;
export HBASE_CLASSPATH=/usr/local/hbase/conf #HBase类路径
export HBASE_SSH_OPTS="-p 55588"#服务器ssh端口

配置HBASE_MANAGES_ZK为true #用自己的ZooKeeper

  

 

vi /usr/local/hbase/conf/hbase-site.xml

<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave001,slave002,slave003,slave004</value>
</property>

  

配置完毕,启动hbase

把hbase目录分发到slave001,slave002,slave003,slave004上
hbase.sh

jps
可以看到HadoopMaster里面多了一个HMaster
在Slave里面
slave001
slave002
slave003
slave004
里面多了
HRegionServer
HQuorumPeer

可以通过个查看Hbase网页版 http://HadoopMaster:50070/

Hbase安装完毕

可以在命令行输入hbase shell,进入hbase的shell,进行hbase操作,相关命令去网上查。

如果想用其它语言访问例如C#访问hbase,可以按下面的步骤操作。

使用thrift进行访问.

在HadoopMaster上启动/user/local/hbase/bin/hbase-daemon.sh start thrift #这个一个用其它语言访问hbase数据库的中间件


下载thrift源代码 http://archive.apache.org/dist/thrift/0.7.0/

从Thrift源码中找到C#客户端源码 \lib\csharp
用VS打开解决方案,编译为Thrift.dll

生成基于Thrift的HBaseC#客户端代码 从这里面下载<http://archive.apache.org/dist/hbase/hbase-1.3.6/>
Hbase-1.3.6-src.targ.gz 12M的
解压进入到hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift\这个里面。
利用Thrift代码生成器Thrift-X.exe进入命令行执行下面命令
thrift-.exe -gen csharp hbase.thrift
代码生成器也去http://archive.apache.org/dist/thrift/0.7.0/这个里面下载
执行上面命令后会在当前目录生成一个包含C#代码的文件夹:gen-csharp

新建一个C#类库项目ThriftHbaseClient并把gen-csharp里面的代码拷贝到新项目中
用Thrift项目
编译生成 ThriftHbaseClient.dll

Hbase C#客户端测试

新建一个控制台项目
引用ThriftHbaseClient和Thrift项目
在main函数插入下面代码

TTransport transport = null;
try
{
    //实例化Socket连接
    transport = );
    //实例化一个协议对象
    TProtocol tProtocol = new TBinaryProtocol(transport);
    //实例化一个Hbase的Client对象
    var client = new Hbase.Client(tProtocol);
    //打开连接
    transport.Open();
    //根据表名,RowKey名来获取结果集
    List<TRowResult> reslut = client.getRow(Encoding.UTF8.GetBytes("Test"), Encoding.UTF8.GetBytes("row1"), null);
    //遍历结果集
    foreach (var key in reslut)
    {
        Console.WriteLine("RowKey:\n{0}", Encoding.UTF8.GetString(key.Row));
        //打印Qualifier和对应的Value
        foreach (var k in key.Columns)
        {
            Console.WriteLine("Family:Qualifier:" + "\n" + Encoding.UTF8.GetString(k.Key));
            Console.WriteLine("Value:" + Encoding.UTF8.GetString(k.Value.Value));
        }
    }
}
catch (Exception e)
{
    System.Console.WriteLine(e);
}
finally
{
    if (null != transport)
    {
        transport.Close();
    }
}
Console.ReadLine();

  

  

 

posted @ 2019-10-19 15:37  仰天长啸~  阅读(211)  评论(0编辑  收藏  举报