Centos 6 安装Hadoop
修改Centos 6的机器名称
vi /etc/sysconfig/network
远程复制文件
scp authorized_keys root@192.168.3.101:~/.ssh/
scp known_hosts root@192.168.3.101:~/.ssh/
设置自己电脑上的Java安装路径(注:环境变量中间不能有空格)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.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
设置主hadoop配置文件
vi /home/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.5.100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
配置hdfs的信息和
vi /home/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.3.100:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置mapreduce
vi /home/hadoop/etc/hadoop/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.3.100:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.3.100:19888</value>
</property>
</configuration>
配置yarn
vi /home/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.3.100:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.3.100:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.3.100:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.3.100:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.3.100:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
</configuration>
配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME,不设置的话,启动不了,
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64
vi /home/hadoop/etc/hadoop/hadoop-env.sh
vi /home/hadoop/etc/hadoop/yarn-env.sh
配置子节点IP删除默认的localhost,增加2个从节点,
vi /home/hadoop/etc/hadoop/slaves
192.168.5.101
192.168.5.102
将配置好的Hadoop复制到各个节点对应位置上,通过scp传送,
scp -r /home/hadoop 192.168.3.101:/home/
scp -r /home/hadoop 192.168.3.102:/home/
在Master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.0目录
(1)初始化,输入命令,bin/hdfs namenode -format
(2)全部启动sbin/start-all.sh,也可以分开sbin/start-dfs.sh、sbin/start-yarn.sh
(3)停止的话,输入命令,sbin/stop-all.sh
(4)输入命令,jps,可以看到相关信息
Web访问,要先开放端口或者直接关闭防火墙
(1)输入命令,systemctl stop firewalld.service
(2)浏览器打开http://192.168.3.100:8088/
(3)浏览器打开http://192.168.3.100:50070/
安装完成。这只是大数据应用的开始,之后的工作就是,结合自己的情况,编写程序调用Hadoop的接口,发挥hdfs、mapreduce的作用。
通过hdfs文件系统上传文件
./hadoop fs -put /home/hadoop/etc/hadoop/*.xml /wc/input/
配置环境变量后的添加文件的方法 2.7.2的使用,及命令
hdfs dfs -put /home/hadoop/etc/hadoop/hadoop-env.sh /wc/input
datanode正常启动了,但是,主节点无法看到子节点
解决办法:在/etc/hosts中添加子节点的ip映射
添加任务后 mapreduce作业状态一直是ACCEPTED
从2.7.1后的版本,子节点如果用yarn控制的话,最小的内存要求是1024,小于这个内存,子节点的nodemanager无法启动,希望设置为2048,有可能系统运行时,需要的内存比1024还大
修改一下配置文件
vi /home/hadoop/etc/hadoop/yarn-site.xml
以下的属性
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
运行示例代码
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wc/input /wc/testout/
集成安装Hbase 1.2.1
解压 tar -xzvf hbase-1.2.1-bin.tar.gz
查看lib的hadoop的版本的jar包是否与安装hadoop的版本一致,如果不一致,一定要替换为hadoop下的jar包版本
可以用下面的脚本来完成替换
查看当前目录下的文件包含有hadoop的jar
find -name ‘hadoop*jar’
vi f.sh
文件内容如下
find -name "hadoop*jar" | sed 's/2.5.1/2.7.2/g' | sed 's/\.\///g' > f.log
rm ./hadoop*jar
cat ./f.log | while read Line
do
find /home/hadoop -name "$Line" | xargs -i cp {} ./
done
rm ./f.log
给文件授权,可以执行的权限
chmod u+x f.sh
执行文件
./f.sh
OK,jar 包替换成功;hbase/lib 目录下还有个 slf4j-log4j12-XXX.jar,在机器有装hadoop时,由于classpath中会有hadoop中的这个jar包,会有冲突,直接删除掉
rm slf4j-log4j12-1.7.5.jar
修改配置文件
vi conf/hbase-env.sh
export JAVA_HOME=/app/java
export HBASE_CLASSPATH=/home/hadoop/etc/hadoop
export HBASE_MANAGES_ZK=true
第一个参数指定了JDK路径;
第二个参数指定了 hadoop 的配置文件路径;
第三个参数设置使用 hbase 默认自带的 Zookeeper
vi conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://node-1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node-1,node-2,node-3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase/zookeeper</value>
</property>
创建目录
mkdir tmp
mkdir zookeeper
vi conf/regionservers
node-1
node-2
node-3
设置环境变量
grid@hadoop4 ~]$ vi /etc/profile
export HBASE_HOME=/home/hbase
export PATH=$PATH:$HBASE_HOME/bin
[grid@hadoop4 ~]$ source /etc/profile
7.分发 hbase 到其它机器,并在其上设置环境变量
[grid@hadoop4 ~]
scp−r/home/hbasenode−2:/home/[grid@hadoop4 ]
scp -r /home/hbase node-3:/home/
8.启动 hbase
[grid@hadoop4 ~]$ sh start-hbase.sh
Hadoop、ZooKeeper和HBase之间应该按照顺序启动和关闭:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集
群—>停止Hadoop。
通过以下网址检查hbase是否启动成功
http://192.168.3.100:16010/