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();