<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HBase on F嘉阳</title><link>https://blog.fjy8018.top/tags/hbase/</link><description>Recent content in HBase on F嘉阳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 05 Dec 2019 15:34:10 +0800</lastBuildDate><atom:link href="https://blog.fjy8018.top/tags/hbase/index.xml" rel="self" type="application/rss+xml"/><item><title>HBase伪分布式安装</title><link>https://blog.fjy8018.top/archives/195/</link><pubDate>Sat, 15 Dec 2018 19:18:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/195/</guid><description>&lt;h2 id="hadoop伪分布式安装"&gt;&lt;a href="#hadoop%e4%bc%aa%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;Hadoop伪分布式安装&#10;&lt;/h2&gt;&lt;h3 id="基础环境"&gt;&lt;a href="#%e5%9f%ba%e7%a1%80%e7%8e%af%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;基础环境&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Hadoop：版本2.7.3，&lt;a class="link" href="https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz" target="_blank" rel="noopener"&#10; &gt;下载地址&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;HBase：版本1.2.4，&lt;a class="link" href="http://archive.apache.org/dist/hbase/1.2.4/hbase-1.2.4-bin.tar.gz" target="_blank" rel="noopener"&#10; &gt;下载地址&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;JDK8&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;jdk 安装命令&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ yum -y install java-devel java&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看当前系统jre和jdk路径，输入&lt;code&gt;update-alternatives --config java&lt;/code&gt;和&lt;code&gt;update-alternatives --config javac&lt;/code&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ update-alternatives --config java&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;共有 &lt;span class="m"&gt;1&lt;/span&gt; 个提供“java”的程序。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 选项 命令&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-----------------------------------------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*+ &lt;span class="m"&gt;1&lt;/span&gt; java-1.8.0-openjdk.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ update-alternatives --config javac&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;共有 &lt;span class="m"&gt;1&lt;/span&gt; 个提供“javac”的程序。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 选项 命令&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-----------------------------------------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*+ &lt;span class="m"&gt;1&lt;/span&gt; java-1.8.0-openjdk.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/javac&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看环境&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ll&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;总用量 &lt;span class="m"&gt;311132&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-------. &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;1241&lt;/span&gt; 8月 &lt;span class="m"&gt;11&lt;/span&gt; 10:53 anaconda-ks.cfg&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r--. &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;214092195&lt;/span&gt; 8月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; hadoop-2.7.3.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r--. &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;104497899&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; hbase-1.2.4-bin.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ java -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openjdk version &lt;span class="s2"&gt;&amp;#34;1.8.0_191&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK Runtime Environment &lt;span class="o"&gt;(&lt;/span&gt;build 1.8.0_191-b12&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM &lt;span class="o"&gt;(&lt;/span&gt;build 25.191-b12, mixed mode&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ javac -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;javac 1.8.0_191&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="免密登录"&gt;&lt;a href="#%e5%85%8d%e5%af%86%e7%99%bb%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;免密登录&#10;&lt;/h3&gt;&lt;p&gt;新建hadoop用户，忽略密码强度提示&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ adduser hadoop&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ passwd hadoop&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;为方便远程连接和学习，同时授予root权限，输入&lt;code&gt;whereis sudoers&lt;/code&gt;查看权限控制文件位置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ whereis sudoers&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudoers: /etc/sudoers /etc/sudoers.d /usr/libexec/sudoers.so /usr/share/man/man5/sudoers.5.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;vi /etc/sudoers&lt;/code&gt;修改内容为&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;root ALL=(ALL) ALL&#10;hadoop ALL=(ALL) ALL&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;切换至&lt;code&gt;hadoop&lt;/code&gt;用户，使用 &lt;code&gt;ssh-keygen -t rsa&lt;/code&gt;生成私钥信息，位置在&lt;code&gt;/home/hadoop/&lt;/code&gt;，并且忽略所有提示输入的信息&lt;/p&gt;&#10;&lt;p&gt;查看生成的文件，该SSH文件夹为隐藏文件夹，故用&lt;code&gt;ls -a&lt;/code&gt;查看，可见自动生成了&lt;code&gt;.ssh&lt;/code&gt;目录和&lt;code&gt;id_rsa&lt;/code&gt;,&lt;code&gt;id_rsa.pub&lt;/code&gt;两个文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ls /home/hadoop/.ssh/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;id_rsa id_rsa.pub&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;复制公钥到.ssh目录&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;免密测试&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ssh localhost&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The authenticity of host &lt;span class="s1"&gt;&amp;#39;localhost (::1)&amp;#39;&lt;/span&gt; can&lt;span class="s1"&gt;&amp;#39;t be established.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;ECDSA key fingerprint is SHA256:3UEr3lx2jznmN3FL3SflViR05IZe6AWweb3TeSsfX0M.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;ECDSA key fingerprint is MD5:0f:31:c1:cc:54:69:7f:d8:8d:7c:8c:22:95:2e:03:4e.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Are you sure you want to continue connecting (yes/no)? yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Warning: Permanently added &amp;#39;&lt;/span&gt;localhost&lt;span class="err"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;ECDSA&lt;span class="o"&gt;)&lt;/span&gt; to the list of known hosts.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Last login: Sat Dec &lt;span class="m"&gt;15&lt;/span&gt; 11:14:27 &lt;span class="m"&gt;2018&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;exit&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;登出&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Connection to localhost closed.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="安装hadoop"&gt;&lt;a href="#%e5%ae%89%e8%a3%85hadoop" class="header-anchor"&gt;&lt;/a&gt;安装Hadoop&#10;&lt;/h3&gt;&lt;p&gt;解压文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ tar -zxvf hadoop-2.7.3.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修改配置文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vi /hadoop-2.7.3/etc/hadoop/hadoop-env.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置Java路径&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# The java implementation to use.&#10;export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;修改HDFS配置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vi /hadoop-2.7.3/etc/hadoop/hdfs-site.xml&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置内容&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;dfs.replication&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="c"&gt;&amp;lt;!-- 配置副本数量--&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;dfs.namenode.name.dir&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;file:/home/hadoop/hadoop_data/dfs/name&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;dfs.namenode.data.dir&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;file:/home/hadoop/hadoop_data/dfs/data&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;手动创建相关目录&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir -p /home/hadoop/hadoop_data/dfs/name&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir -p /home/hadoop/hadoop_data/dfs/data&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置&lt;code&gt;core-site.xml&lt;/code&gt;，内容为&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;fs.defaultFS&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- 配置主机IP--&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;hdfs://0.0.0.0:8020&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- 配置临时文件位置--&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;hadoop.tmp.dir&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;file:/home/hadoop/hadoop_data&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;放行端口并重载&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ firewall-cmd --zone&lt;span class="o"&gt;=&lt;/span&gt;public --add-port&lt;span class="o"&gt;=&lt;/span&gt;8020/tcp --add-port&lt;span class="o"&gt;=&lt;/span&gt;50070/tcp --permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ firewall-cmd --reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="启动hadoop"&gt;&lt;a href="#%e5%90%af%e5%8a%a8hadoop" class="header-anchor"&gt;&lt;/a&gt;启动Hadoop&#10;&lt;/h3&gt;&lt;h4 id="初始化"&gt;&lt;a href="#%e5%88%9d%e5%a7%8b%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;初始化&#10;&lt;/h4&gt;&lt;p&gt;进入&lt;code&gt;/hadoop-2.7.3/bin&lt;/code&gt;目录，使用如下语句初始化Hadoop，该操作仅执行一次即可，以后使用无需重复执行，否则执行后会删除当前hadoop上的所有文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hadoop namenode -format&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;滚动均为&lt;code&gt;info&lt;/code&gt;级别的日志并且&lt;code&gt;status 0&lt;/code&gt;表示已初始化成功&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;...&#10;18/12/15 17:07:32 INFO namenode.FSImage: Allocated new BlockPoolId: BP-99731851-127.0.0.1-1544864852133&#10;18/12/15 17:07:32 INFO common.Storage: Storage directory /home/hadoop/hadoop_data/dfs/name has been successfully formatted.&#10;18/12/15 17:07:32 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoop_data/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression&#10;18/12/15 17:07:32 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoop_data/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 353 bytes saved in 0 seconds.&#10;18/12/15 17:07:32 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid &amp;gt;= 0&#10;18/12/15 17:07:32 INFO util.ExitUtil: Exiting with status 0&#10;18/12/15 17:07:32 INFO namenode.NameNode: SHUTDOWN_MSG: &#10;/************************************************************&#10;SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1&#10;************************************************************/&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="启动hdfs"&gt;&lt;a href="#%e5%90%af%e5%8a%a8hdfs" class="header-anchor"&gt;&lt;/a&gt;启动HDFS&#10;&lt;/h4&gt;&lt;p&gt;进入&lt;code&gt;/hadoop-2.7.3/sbin&lt;/code&gt;目录输入&lt;code&gt;./start-dfs.sh&lt;/code&gt;启动HDFS服务&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./start-dfs.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Starting namenodes on &lt;span class="o"&gt;[&lt;/span&gt;0.0.0.0&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The authenticity of host &lt;span class="s1"&gt;&amp;#39;0.0.0.0 (0.0.0.0)&amp;#39;&lt;/span&gt; can&lt;span class="s1"&gt;&amp;#39;t be established.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;ECDSA key fingerprint is SHA256:3UEr3lx2jznmN3FL3SflViR05IZe6AWweb3TeSsfX0M.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;ECDSA key fingerprint is MD5:0f:31:c1:cc:54:69:7f:d8:8d:7c:8c:22:95:2e:03:4e.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Are you sure you want to continue connecting (yes/no)? yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;0.0.0.0: Warning: Permanently added &amp;#39;&lt;/span&gt;0.0.0.0&lt;span class="err"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;ECDSA&lt;span class="o"&gt;)&lt;/span&gt; to the list of known hosts.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;0.0.0.0: starting namenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;localhost: starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Starting secondary namenodes &lt;span class="o"&gt;[&lt;/span&gt;0.0.0.0&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进程验证，若出现如下四个进程表示HDFS服务启动成功&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ jps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28930&lt;/span&gt; Jps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28821&lt;/span&gt; SecondaryNameNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28663&lt;/span&gt; DataNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28541&lt;/span&gt; NameNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="配置hdfs命令"&gt;&lt;a href="#%e9%85%8d%e7%bd%aehdfs%e5%91%bd%e4%bb%a4" class="header-anchor"&gt;&lt;/a&gt;配置hdfs命令&#10;&lt;/h3&gt;&lt;p&gt;使用&lt;code&gt;vi ~/.bash_profile&lt;/code&gt;进入配置文件，按如下配置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;HADOOP_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/home/hadoop/hadoop-2.7.3&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HADOOP_HOME&lt;/span&gt;/bin:&lt;span class="nv"&gt;$PATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使配置文件生效&lt;code&gt;source ~/.bash_profile&lt;/code&gt;&#10;输入&lt;code&gt;hdfs&lt;/code&gt;回车测试命令是否生效，若出现如下画面则表示命令已经生效&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hdfs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Usage: hdfs &lt;span class="o"&gt;[&lt;/span&gt;--config confdir&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;--loglevel loglevel&lt;span class="o"&gt;]&lt;/span&gt; COMMAND&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; where COMMAND is one of:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dfs run a filesystem &lt;span class="nb"&gt;command&lt;/span&gt; on the file systems supported in Hadoop.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; classpath prints the classpath&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; namenode -format format the DFS filesystem&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; secondarynamenode run the DFS secondary namenode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; namenode run the DFS namenode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; journalnode run the DFS journalnode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; zkfc run the ZK Failover Co&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="命令测试"&gt;&lt;a href="#%e5%91%bd%e4%bb%a4%e6%b5%8b%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;命令测试&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hadoop fs -mkdir /test&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hadoop fs -ls /&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Found &lt;span class="m"&gt;1&lt;/span&gt; items&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x - hadoop supergroup &lt;span class="m"&gt;0&lt;/span&gt; 2018-12-15 17:14 /test&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="hbase伪分布式搭建"&gt;&lt;a href="#hbase%e4%bc%aa%e5%88%86%e5%b8%83%e5%bc%8f%e6%90%ad%e5%bb%ba" class="header-anchor"&gt;&lt;/a&gt;HBase伪分布式搭建&#10;&lt;/h2&gt;&lt;h3 id="hbase安装"&gt;&lt;a href="#hbase%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;HBase安装&#10;&lt;/h3&gt;&lt;p&gt;解压安装包，目录如下&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ll&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;总用量 &lt;span class="m"&gt;320&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x. &lt;span class="m"&gt;4&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;4096&lt;/span&gt; 1月 &lt;span class="m"&gt;29&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r--. &lt;span class="m"&gt;1&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;122439&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; CHANGES.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x. &lt;span class="m"&gt;2&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;178&lt;/span&gt; 1月 &lt;span class="m"&gt;29&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x. &lt;span class="m"&gt;12&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;4096&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; docs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x. &lt;span class="m"&gt;7&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;80&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; hbase-webapps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-rw-r--. &lt;span class="m"&gt;1&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;261&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; LEGAL&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x. &lt;span class="m"&gt;3&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;8192&lt;/span&gt; 12月 &lt;span class="m"&gt;15&lt;/span&gt; 11:24 lib&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-rw-r--. &lt;span class="m"&gt;1&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;130696&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; LICENSE.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-rw-r--. &lt;span class="m"&gt;1&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;42025&lt;/span&gt; 10月 &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;2016&lt;/span&gt; NOTICE.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r--. &lt;span class="m"&gt;1&lt;/span&gt; hadoop hadoop &lt;span class="m"&gt;1477&lt;/span&gt; 12月 &lt;span class="m"&gt;27&lt;/span&gt; &lt;span class="m"&gt;2015&lt;/span&gt; README.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;拷贝Hadoop配置文件到&lt;code&gt;/conf&lt;/code&gt;目录&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cp /home/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml .&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cp /home/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml .&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修改&lt;code&gt;hbase-env.sh&lt;/code&gt;文件，增加JDK路径&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# The java implementation to use. Java 1.7+ required.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;JAVA_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;由于使用的是jdk8，主要注释内存配置&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#export HBASE_MASTER_OPTS=&amp;#34;$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#export HBASE_REGIONSERVER_OPTS=&amp;#34;$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;另外打开文件最后zookeeper配置，设置为使用内置的zookeeper&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Tell HBase whether it should manage it&amp;#39;s own instance of Zookeeper or not.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;HBASE_MANAGES_ZK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修改&lt;code&gt;hbase-site.xml&lt;/code&gt;文件，内容如下&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;hbase.rootdir&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- 配置文件根目录--&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;hdfs://localhost:8020/hbase&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;hbase.zookeeper.property.dataDir&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;/home/hadoop/hadoop_data/zookeeper&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;hbase.cluster.distributed&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- 配置以集群方式运行--&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nt"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="link" href="https://hbase.apache.org/book.html" target="_blank" rel="noopener"&#10; &gt;参考文档&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="启动hbase"&gt;&lt;a href="#%e5%90%af%e5%8a%a8hbase" class="header-anchor"&gt;&lt;/a&gt;启动HBase&#10;&lt;/h3&gt;&lt;p&gt;在&lt;code&gt;/bin&lt;/code&gt;目录下执行&lt;code&gt;./start-hbase.sh&lt;/code&gt;启动HBase&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./start-hbase.sh &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, &lt;span class="k"&gt;then&lt;/span&gt; you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads&lt;span class="o"&gt;=&lt;/span&gt;N&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, &lt;span class="k"&gt;then&lt;/span&gt; you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads&lt;span class="o"&gt;=&lt;/span&gt;N&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;localhost: starting zookeeper, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-zookeeper-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;localhost: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, &lt;span class="k"&gt;then&lt;/span&gt; you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads&lt;span class="o"&gt;=&lt;/span&gt;N&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;starting master, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-master-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, &lt;span class="k"&gt;then&lt;/span&gt; you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads&lt;span class="o"&gt;=&lt;/span&gt;N&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;starting regionserver, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-1-regionserver-localhost.localdomain.out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;由于虚拟机只分配了单核单线程，GC警告暂时忽略&lt;/p&gt;&#10;&lt;p&gt;进程验证，确认启动成功&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ jps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28821&lt;/span&gt; SecondaryNameNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28663&lt;/span&gt; DataNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;29911&lt;/span&gt; HRegionServer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;29785&lt;/span&gt; HMaster&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;29724&lt;/span&gt; HQuorumPeer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;28541&lt;/span&gt; NameNode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;30303&lt;/span&gt; Jps&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进入HBase命令行测试&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./hbase shell&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, &lt;span class="k"&gt;then&lt;/span&gt; you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads&lt;span class="o"&gt;=&lt;/span&gt;N&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SLF4J: Class path contains multiple SLF4J bindings.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SLF4J: Found binding in &lt;span class="o"&gt;[&lt;/span&gt;jar:file:/home/hadoop/hbase-1.2.4/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SLF4J: Found binding in &lt;span class="o"&gt;[&lt;/span&gt;jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings &lt;span class="k"&gt;for&lt;/span&gt; an explanation.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SLF4J: Actual binding is of &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;org.slf4j.impl.Log4jLoggerFactory&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HBase Shell&lt;span class="p"&gt;;&lt;/span&gt; enter &lt;span class="s1"&gt;&amp;#39;help&amp;lt;RETURN&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; list of supported commands.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type &lt;span class="s2"&gt;&amp;#34;exit&amp;lt;RETURN&amp;gt;&amp;#34;&lt;/span&gt; to leave the HBase Shell&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Version 1.2.4, r67592f3d062743907f8c5ae00dbbe1ae4f69e5af, Tue Oct &lt;span class="m"&gt;25&lt;/span&gt; 18:10:20 CDT &lt;span class="m"&gt;2016&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hbase&lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;:001:0&amp;gt; status&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;1&lt;/span&gt; active master, &lt;span class="m"&gt;0&lt;/span&gt; backup masters, &lt;span class="m"&gt;1&lt;/span&gt; servers, &lt;span class="m"&gt;0&lt;/span&gt; dead, 2.0000 average load&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hbase&lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;:002:0&amp;gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看其是否自动在HDFS上创建目录&lt;code&gt;/hbase&lt;/code&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hadoop fs -ls /&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Found &lt;span class="m"&gt;2&lt;/span&gt; items&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x - hadoop supergroup &lt;span class="m"&gt;0&lt;/span&gt; 2018-12-15 18:43 /hbase&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxr-xr-x - hadoop supergroup &lt;span class="m"&gt;0&lt;/span&gt; 2018-12-15 17:14 /test&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>HBase 学习笔记</title><link>https://blog.fjy8018.top/archives/194/</link><pubDate>Sat, 15 Dec 2018 12:06:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/194/</guid><description>&lt;h2 id="概述"&gt;&lt;a href="#%e6%a6%82%e8%bf%b0" class="header-anchor"&gt;&lt;/a&gt;概述&#10;&lt;/h2&gt;&lt;h3 id="hbase-简介"&gt;&lt;a href="#hbase-%e7%ae%80%e4%bb%8b" class="header-anchor"&gt;&lt;/a&gt;HBase 简介&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Hbase是一个分布式的、面向列的开源数据库&#10;&lt;ul&gt;&#10;&lt;li&gt;列式数据库：将列值统一存储&lt;/li&gt;&#10;&lt;li&gt;行式数据库：关系型数据库，将每一行值统一存储&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Hbase在Hadoop之上提供了类似于Bigtable的能力&#10;&lt;ul&gt;&#10;&lt;li&gt;Bigtable是压缩、高性能、高可扩展性的基于Google GFS文件系统的数据库，用于存储大规模的结构化数据，在扩展性和性能上有很大的优势&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Hbase不同于一般的关系数据库，它适合非结构化数据存储&#10;&lt;ul&gt;&#10;&lt;li&gt;非结构化数据：不能用二维表进行存储的数据，例如图片、文档等&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="hbase地位"&gt;&lt;a href="#hbase%e5%9c%b0%e4%bd%8d" class="header-anchor"&gt;&lt;/a&gt;Hbase地位&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Apache基金会顶级项目&lt;/li&gt;&#10;&lt;li&gt;基于Hadoop核心HDFS系统进行数据存储，类似于Hive&lt;/li&gt;&#10;&lt;li&gt;可以存储超大数据并适合用来进行大数据的的&lt;strong&gt;实时查询&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="hbase与hdfs"&gt;&lt;a href="#hbase%e4%b8%8ehdfs" class="header-anchor"&gt;&lt;/a&gt;Hbase与HDFS&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Hbase建立在Hadoop文件系统上，利用了Hadoop文件系统的容错能力&lt;/li&gt;&#10;&lt;li&gt;Hbase提供对数据&lt;strong&gt;随机实时读/写&lt;/strong&gt;访问功能&lt;/li&gt;&#10;&lt;li&gt;Hbase内部使用&lt;strong&gt;哈希表&lt;/strong&gt;存储索引，可将HDFS文件中的数据进行快速查找&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="适用场景"&gt;&lt;a href="#%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;适用场景&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;瞬间写入量很大，常用数据库不好支持或者需要很高的成本支撑&lt;/li&gt;&#10;&lt;li&gt;数据需要长久保存，且数据量会持久增长到比较大的场景&lt;/li&gt;&#10;&lt;li&gt;Hbase不适合用于有join、多级索引、表关系复杂的数据模型&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="存储模型与原理"&gt;&lt;a href="#%e5%ad%98%e5%82%a8%e6%a8%a1%e5%9e%8b%e4%b8%8e%e5%8e%9f%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;存储模型与原理&#10;&lt;/h2&gt;&lt;h3 id="cap定理"&gt;&lt;a href="#cap%e5%ae%9a%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;CAP定理&#10;&lt;/h3&gt;&lt;p&gt;分布式系统的CAP理论：理论首先把分布式系统中的三个特性进行了如下归纳：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;一致性（C）：所有节点在同一时间具有相同的数据&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可用性（A）：保证每个请求不管成功或者失败（包含节点宕机）都有响应，但不保证获取数据的正确性&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;分区容错性（P）：系统中任意信息的丢失或失败不会影响系统的继续运作。系统如果不能在时限内达成数据一致性，必须就当前操作在C和A之间做出选择。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Hbase为CP特性&lt;/p&gt;&#10;&lt;h3 id="acid"&gt;&lt;a href="#acid" class="header-anchor"&gt;&lt;/a&gt;ACID&#10;&lt;/h3&gt;&lt;p&gt;ACID的定义：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Atomic原子性&lt;/strong&gt;:所有的步骤要么全部完成要么一个也不会完成&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Consistent一致性&lt;/strong&gt;: 通过各种途径包括外键约束等任何写入数据库的数据都是有效的，不能发生表与表之间存在外键约束&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Isolated&lt;/strong&gt;隔离性: 一个未完成事务不会影响另外一个未完成事务&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Durable&lt;/strong&gt;持久性: 一旦一个事务被提交，它应该持久保存&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;HBase非强ACID&lt;/p&gt;&#10;&lt;h3 id="hbase概念"&gt;&lt;a href="#hbase%e6%a6%82%e5%bf%b5" class="header-anchor"&gt;&lt;/a&gt;HBase概念&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;字段&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;概念&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;备注&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NameSpace&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;类似RDBMS的“数据库”&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Table&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;表名必须是能用在文件路径里的合法名字&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;原因：每个表都会映射为HDFS的文件&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Row&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;在表里，每一行代表一个数据对象，每一行都以一个行键（Row Key）来唯一标识的，行键没有特定的数据类型，以二进制的字节进行存储&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Row Key&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;唯一标识一行记录，不可改变，只能删除&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Column&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;由Column family和Column qualifier组成，由（：）进行分隔&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;例如：family：qualifier&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Column family&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;在定义HBase表的时候需要提前设置好列族，表中所有的列都需要组织在列族里面&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同一个列族的成员有相同的前缀，物理上，一个列族的成员都是储存在一起，用于存储优化&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Column qualifier（列限定符）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;列族中的数据通过列标识来进行映射，可以理解为一个键值对，Column qualifier就是Key&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;类似具体的列名&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cell&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每一个行键，列族和列标识共同组成的一个单元&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无特定的数据类型，以二进制字节存储&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Timestamp&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每个值都有一个Timestamp，作为该值特定版本的标识符&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;读未指定版本则返回最新版，写未指定时间则使用当前时间，HBase默认保留3个版本数据&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="hbase与传统关系数据库的区别"&gt;&lt;a href="#hbase%e4%b8%8e%e4%bc%a0%e7%bb%9f%e5%85%b3%e7%b3%bb%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e5%8c%ba%e5%88%ab" class="header-anchor"&gt;&lt;/a&gt;HBase与传统关系数据库的区别&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Hbase&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;RDBMS&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;数据库大小&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GB、TB&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;数据类型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bytes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;丰富的数据类型&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;事务支持&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ACID只支持单个Row级别&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全面的ACID支持&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;索引&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;只支持Row-Key&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;支持&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;吞吐量&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;百万查询/每秒&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;数千查询/每秒&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="hbase基础架构"&gt;&lt;a href="#hbase%e5%9f%ba%e7%a1%80%e6%9e%b6%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;HBase基础架构&#10;&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://i.loli.net/2018/12/15/5c14dd85593e5.jpg" target="_blank" rel="noopener"&#10; &gt;&lt;img alt="hbase1.jpg" class="gallery-image" data-flex-basis="402px" data-flex-grow="167" height="760" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://i.loli.net/2018/12/15/5c14dd85593e5.jpg" width="1274"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="hbase分布式系统简介"&gt;&lt;a href="#hbase%e5%88%86%e5%b8%83%e5%bc%8f%e7%b3%bb%e7%bb%9f%e7%ae%80%e4%bb%8b" class="header-anchor"&gt;&lt;/a&gt;HBase分布式系统简介&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;HMaster&#10;&lt;ul&gt;&#10;&lt;li&gt;HBase主/从集群架构中的中央节点&lt;/li&gt;&#10;&lt;li&gt;负责将region（HBase中存储最小单元，表格的基本单位）分配给RegionServer，协调RegionServer的负载并维护集群状态&lt;/li&gt;&#10;&lt;li&gt;维护表和Region的元数据，不参与数据的输入/输出过程&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;RegionServer&#10;&lt;ul&gt;&#10;&lt;li&gt;维护HMaster分配给他的region，处理对这些region的IO请求&lt;/li&gt;&#10;&lt;li&gt;负责切分正在运行过程中变得过大的region&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Zookeeper&#10;&lt;ul&gt;&#10;&lt;li&gt;集群协调器，保证至少一个节点出于active状态&lt;/li&gt;&#10;&lt;li&gt;HMaster启动将系统表加载到ZK（用于服务发现）&lt;/li&gt;&#10;&lt;li&gt;提供HBase RegionServer状态信息&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="hbase原理"&gt;&lt;a href="#hbase%e5%8e%9f%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;HBase原理&#10;&lt;/h2&gt;&lt;h3 id="hbase写流程"&gt;&lt;a href="#hbase%e5%86%99%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;HBase写流程&#10;&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://i.loli.net/2018/12/15/5c14eab0b66f1.jpg" target="_blank" rel="noopener"&#10; &gt;&lt;img alt="hbase2.jpg" class="gallery-image" data-flex-basis="471px" data-flex-grow="196" height="699" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://i.loli.net/2018/12/15/5c14eab0b66f1.jpg" width="1373"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Client先访问zookeeper，得到对应的RegionServer地址&lt;/li&gt;&#10;&lt;li&gt;Client对RegionServer发起写请求，RegionServer接受数据写入内存&lt;/li&gt;&#10;&lt;li&gt;当MemStore的大小达到一定值后，flush到StoreFile并存储到HDFS&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://i.loli.net/2018/12/15/5c14f18fb8065.jpg" target="_blank" rel="noopener"&#10; &gt;&lt;img alt="hbase3.jpg" class="gallery-image" data-flex-basis="508px" data-flex-grow="212" height="704" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://i.loli.net/2018/12/15/5c14f18fb8065.jpg" width="1493"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;HBase特殊点在于其先写内存再写日志，通过类似MySQL中MVCC机制保证一致性&lt;/p&gt;&#10;&lt;h3 id="hbase读流程"&gt;&lt;a href="#hbase%e8%af%bb%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;HBase读流程&#10;&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://i.loli.net/2018/12/15/5c14f377038f9.jpg" target="_blank" rel="noopener"&#10; &gt;&lt;img alt="hbase4.jpg" class="gallery-image" data-flex-basis="469px" data-flex-grow="195" height="710" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://i.loli.net/2018/12/15/5c14f377038f9.jpg" width="1388"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Client先访问zookeeper，得到对应的RegionServer地址&lt;/li&gt;&#10;&lt;li&gt;Client对RegionServer发起读请求&lt;/li&gt;&#10;&lt;li&gt;当RegionServer收到client的读请求后，先扫描自己的Memstore，再扫描BlockCache（加速读内容缓存区）如果还没找到则从StoreFile中读取数据，然后将数据返回给Client&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="读特点"&gt;&lt;a href="#%e8%af%bb%e7%89%b9%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;读特点&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;读过程与HMaster无关，只和ZK有关，有效的减小HMaster负载&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="hbase模块协作"&gt;&lt;a href="#hbase%e6%a8%a1%e5%9d%97%e5%8d%8f%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;HBase模块协作&#10;&lt;/h3&gt;&lt;p&gt;有关HBase的三个问题&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;HBase启动时发生了什么&lt;/li&gt;&#10;&lt;li&gt;当RegionServer失效后会发生什么&lt;/li&gt;&#10;&lt;li&gt;当HMaster失效后会发生什么&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="hbase启动"&gt;&lt;a href="#hbase%e5%90%af%e5%8a%a8" class="header-anchor"&gt;&lt;/a&gt;HBase启动&#10;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;HBase启动，注册到zookeeper，等待RegionServer汇报&lt;/li&gt;&#10;&lt;li&gt;RegionServer注册到zookeeper，并向HMaster汇报&lt;/li&gt;&#10;&lt;li&gt;对各个RegionServer（包括失效的）的数据进行整理，分配Region和meta信息（所有表的索引）&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="regionserver失效"&gt;&lt;a href="#regionserver%e5%a4%b1%e6%95%88" class="header-anchor"&gt;&lt;/a&gt;RegionServer失效&#10;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;HMaster将失效RegionServer上的Region分配到其他节点&lt;/li&gt;&#10;&lt;li&gt;HMaster更新HBase：meta表保证数据正常访问&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="hmaster失效"&gt;&lt;a href="#hmaster%e5%a4%b1%e6%95%88" class="header-anchor"&gt;&lt;/a&gt;HMaster失效&#10;&lt;/h4&gt;&lt;p&gt;配置高可用后&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;出于Backup状态的其他HMaster节点选举出一个转为Active状态&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;未配置高可用&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;数据能正常读写，但不能创建删除表，也不能更改表结构，因为涉及meta表更新&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item></channel></rss>