1. 虚拟机配置
安装3个机器,机器名称分别叫CentOS Master、Slave1、Slave2(说明机器名不这么叫可以,待会用hostname命令修改也行)。
如图:
修改机器名:https://blog.csdn.net/summer_huan/article/details/76104611,
修改这/etc/hosts文件,在文件中添加以下内容:
192.168.10.132 master
192.168.10.132 slave1
192.168.10.132 slave2
使用scp命令将hosts文件传给其他虚拟机:
# scp /etc/hosts root@slave01:/etc/hosts
# scp /etc/hosts root@slave02:/etc/hosts
2. 安装JDK1.8
详细过程请参考:https://blog.csdn.net/hui_2016/article/details/69941850
3. SSH配置
修改hosts文件:假设有三台机器,192.168.1.131, 192.168.1.132, 192.168.1.133,hostname分别是master, slave1, slave2
1.1 在master上生成一对公钥和密钥
dev@master:~$ ssh-keygen -t dsa -P '' -f~/.ssh/id_dsa
1.2 将公钥拷贝到自己
dev@master:~$ cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
1.3 将公钥拷贝到其他机器
dev@master:~$ scp ~/.ssh/id_dsa.pubdev@slave1:~
dev@master:~$ scp ~/.ssh/id_dsa.pubdev@slave2:~
#追加到authorized_keys
dev@master:~$ ssh slave1
dev@slave01:~$ mkdir .ssh
dev@slave01:~$ cat id_dsa.pub >>.ssh/authorized_keys
dev@slave01:~$ exit
dev@master:~$ ssh slave2
dev@slave02:~$ mkdir .ssh
dev@slave02:~$ cat id_dsa.pub >>.ssh/authorized_keys
dev@slave02:~$ exit
1.4 设置.ssh目录和authorized_keys文件的权限
在被登录的每台机器上,执行如下命令:
chmod 755 .ssh
chmod 600 ~/.ssh/authorized_keys
1.5 测试一下
#在 master执行
dev@master:~$ ssh slave1
第一次还是需要密码的,exit退出再试一次,就不需要密码了。
如果登陆不上,试试先关闭所有机器的防火墙,例如Ubuntu的命令是:
dev@slave1:~$ sudo ufw disable
4. 安装配置Hadoop
复制:
#cp <download_path>/ hadoop-2.7.6.tar.gz /opt/hadoop-2.7.6.tar.gz
解压:
# tar -zxvf hadoop-2.7.6.tar.gz
HBase包的操作类似。
1. 新建目录:
#mkdir /root/hadoop #mkdir /root/hadoop/tmp #mkdir /root/hadoop/var #mkdir /root/hadoop/dfs #mkdir /root/hadoop/dfs/name #mkdir /root/hadoop/dfs/data
在<configuration>节点内加入配置:
<property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property>
3. 修改hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_171
4. 修改hdfs-site.xml
<property> <name>dfs.name.dir</name> <value>/root/hadoop/dfs/name</value> <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description> </property> <property> <name>dfs.data.dir</name> <value>/root/hadoop/dfs/data</value> <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <description>need not permissions</description> </property>
5. 新建并且修改mapred-site.xml
<property> <name>mapred.job.tracker</name> <value>master:49001</value> </property> <property> <name>mapred.local.dir</name> <value>/root/hadoop/var</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
6. 修改slaves文件
slave1
slave2
6. 修改yarn-site.xml文件
在<configuration>节点内加入配置:<property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <description>The address of the applications manager interface in the RM.</description> <name>yarn.resourcemanager.address</name> <value>${yarn.resourcemanager.hostname}:8032</value> </property> <property> <description>The address of the scheduler interface.</description> <name>yarn.resourcemanager.scheduler.address</name> <value>${yarn.resourcemanager.hostname}:8030</value> </property> <property> <description>The http address of the RM web application.</description> <name>yarn.resourcemanager.webapp.address</name> <value>${yarn.resourcemanager.hostname}:8088</value> </property> <property> <description>The https adddress of the RM web application.</description> <name>yarn.resourcemanager.webapp.https.address</name> <value>${yarn.resourcemanager.hostname}:8090</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>${yarn.resourcemanager.hostname}:8031</value> </property> <property> <description>The address of the RM admin interface.</description> <name>yarn.resourcemanager.admin.address</name> <value>${yarn.resourcemanager.hostname}:8033</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
7. 分发配置文件
$ cd$HADOOP_PREFIX/etc/hadoop
$ scp hadoop-env.shmapred-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop@slave1:$HADOOP_PREFIX/etc/hadoop
$ scp hadoop-env.shmapred-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop@slave2:$HADOOP_PREFIX/etc/hadoop
8. 启动Hadoop
在NameNode这个机器(在这里是master)上执行下列命令,
#只需一次,下次启动不再需要格式化,只需start-dfs.sh
$ hdfs namenode -format
$ start-dfs.sh
启动Yarn
在ResourceManager这台机器(在这里仍然是master)上执行,
$ start-yarn.sh
注意:这里出现过多次启动后,datanode无法启动的问题,我把namenode和datanode文件夹中的内容全部删除,重新运行上述命令,启动成功。
用./jps
查看java进程。
在master上,应该有三个进程,NameNode, SecondaryNameNode, ResourceManger;在每台slave上,应该有两个进程,DataNode, NodeManager
5. 安装配置HBase
#mkdir /root/hbase #mkdir /root/hbase/tmp #mkdir /root/hbase/zookeeper #mkdir /root/hbase/zookeeper/data
1. 修改hbase-site.xml
<?xml version="1.0"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,slave1,slave2</value> </property> <property> <name>hbase.tmp.dir</name> <value>/root/hbase/tmp</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/root/hbase/zookeeper/data</value> </property> </configuration>
2. 配置regionservers
slave1slave2
3. 配置hbase-env.sh
增:
export JAVA_HOME=${JAVA_HOME}
export HBASE_MANAGES_ZK=true (使用HBase自带Zookeeper)
启动
bin/start-hbase.sh
验证 HBase 成功安装
在 master 运行 jps 应该会有HMaster进程。在各个 slave 上运行jps应该会有HQuorumPeer,HRegionServer两个进程。
在浏览器中输入http://master:16010 可以看到 HBase Web UI 。
控制台
bin/hbase shell
创建表和列族
create 'test', 'cf'
显示已经创建的表
list
向test表中插入数据
put 'test', 'row1', 'cf:a', 'hello,world'
扫描显示test表中全部数据
scan 'test'
获取test表中指定行的数据
get 'test', 'row1'
6. 问题总结