>>>>>>>>>>>>>>>>>>>>>>>>>>>>hadoop
1、准备环境
centos6.5 版本。
1)安装中文输入法:
1、需要root权限,所以要用root登录 ,或su root
2、yum install "@Chinese Support"
2)安装ssh或者vsftp
使用chkconfig --list来查看是否装有vsftpd服务;
使用yum命令直接安装: yum install vsftpd
查看与管理ftp服务:
启动ftp服务:service vsftpd start
查看ftp服务状态:service vsftpd status
重启ftp服务:service vsftpd restart
关闭ftp服务:service vsftpd stop
3)jdk安装
这里可以在一台电脑上配置,然后拷贝到其他电脑
scp -r /usr/java/ zjenterprise02:/usr/java/
2、修改主机名
[root@zjenterprise02]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zjenterprise02
3、修改IP
vim /etc/sysconfig/network-scripts/ifcfg-em1
修改IPADDR=192.168.3.132
5、配置/ect/hosts,服务器的配置一样
vim /etc/hosts
192.168.3.132 |
zjenterprise02 |
Jdk Hadoop hbase |
Namenode DFSZKFailoverController Hamster |
192.168.3.134 |
zjenterprise03 |
Jdk Hadoop hbase |
Namenode DFSZKFailoverController Hamster |
192.168.3.136 |
zjenterprise04 |
Jdk Hadoop |
resourceManager |
192.168.3.138 |
zjenterprise05 |
Jdk Hadoop Zookeeper hbase |
Datanode nodeManager JournalNode QuorumPeerMain HRegionServer |
192.168.3.140 |
zjenterprise06 |
Jdk Hadoop Zookeeper Hbase |
Datanode nodeManager JournalNode QuorumPeerMain HRegionServer |
6、 关闭防火墙
service iptables stop
chkconfig iptables off
7、创建用户(使用root用户创建后来发现Browse the filesystem 报错,后来查文档,建议使用新建的用户)
useradd hadoop
passwd hadoop
输入密码,确认
8、ssh无密码登录
ssh-keygen –t rsa //产生公钥和私钥
拷贝公钥到其他电脑(zjenterprise03为主机名)
ssh-copy-id -i zjenterprise03
1、在主服务器master下生成密钥
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2、将密钥放在 ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3、对生成的文件authorized_keys授权
chmod 600 ~/.ssh/authorized_keys
4、编辑sshd_config文件,将下面三列#去掉
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5、重启sshd 服务(可省略)
service sshd restart
6、验证无验证登陆
ssh localhost
7 配置zjenterprise02无密钥登陆zjenterprise03(以此可以配置master无密钥登陆slaveX)
注释:root为root用户,zjenterprise02为主机名
[root@zjenterprise02 ~]# scp -r root@zjenterprise02 :/root/.ssh/id_dsa.pub /root/.ssh/slaver.pub
[root@zjenterprise02 ~]# cat ~/.ssh/slaver.pub >> ~/.ssh/authorized_keys
chmod 600~/.ssh/authorized_keys
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service sshd restart
6、HADOOP的下载和环境的配置
http://mirror.esocc.com/apache/hadoop/common/hadoop-2.6.0/
[ ] hadoop-2.6.0.tar.gz
hadoop环境变量的配置:
vi/etc/profile
在文件的最下面添加
BASE_HOME=/myhome/env
export HADOOP_HOME=$BASE_HOME/blocks/hadoop
export PAHT=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
注:在64位操作系统上需要加入一下红色部分的配置信息
网上看到的另一种解决办法:
在使用./sbin/start-dfs.sh或./sbin/start-all.sh启动时会报出这样如下警告:
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
....
Java: ssh: Could not resolve hostname Java: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
....
这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。
解决方法之一是在64位系统上重新编译hadoop,另一种方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
注:/myhome/env/blocks/hadoop2.6.0/hadoop-2.6.0为自定义的下载hadoop文件的解压路径
7、修改hadoop的配置文件hadoop2.6.0/etc/hadoop
1、修改hadoop-env.sh 、yarn-env.sh 确保hadoop运行所需要的java环境
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_20
2、修改core-site.xml文件 定义文件系统的配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://zjenterprise02:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/myhome/env/blocks/hadoop-2.6.0/tmp</value>
</property>
</configuration>
3、修改hadfs-site.xml 定义名称节点和数据节点
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>/myhome/env/blocks/conf/hadoop/hdf/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/myhome/env/blocks/conf/hadoop/hdf/name</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4、修改mapred-site.xml Configurations for MapReduce Applications
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>zjenterprise02:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>zjenterprise02:19888</value>
</property>
5、修改yarn-site.xml文件
该文件主要用于:
1、Configurations for ResourceManager and NodeManager:
2、Configurations for ResourceManager:
3、Configurations for NodeManager:
4、Configurations for History Server (Needs to be moved elsewhere):
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>zjenterprise02:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>zjenterprise02:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>zjenterprise02:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>zjenterprise02:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>zjenterprise02:8088</value>
</property>
8、创建第7步配置文件中多出的文件夹
data tmp name log mkdir -r /myhome/env/blocks/conf/hadoop/hdf/data 等
9、为这些文件夹赋权限 比较关键 不然文件生成的时候无文件创建、写权限
su - root
chown -R hadoop:hadoop /myhome/env/blocks/ (不明白的可以查看chown命令)
或者切换到hadoop用户下 通过chmod -R 777 data 赋权限
10、将配置好的hadoop分别拷贝到 zjenterprise03 和zjenterprise04主机上
scp -r /myhome/env/blocks/hadoop hadoop@zjenterprise03:/myhome/env/blocks/hadoop/
scp -r /myhome/env/blocks/hadoop hadoop@zjenterprise04:/myhome/env/blocks/hadoop/
11、hadoop namenode的初始化
如果 hadoop环境变量配置没问题直接使用
hdfs namenode -format
hadoop command not found 解决办法:
echo $PATH
发现hadoop的环境变量是:/home/hadoop/bin 而不是我们配置的环境变量,我们需要把hadoop-2.6.0包下的bin、sbin文件夹拷贝到/home/hadoop/下,再次echo $PATH,发现可以了。
12、关闭防火墙 三台服务器的防火墙都需要关闭
查看iptables状态:
service iptables status
iptables开机自动启动:
开启: chkconfig iptables on
关闭: chkconfig iptables off
iptables关闭服务:
开启: service iptables start
关闭: service iptables stop
13、启动hadoop
start-all.sh
关闭hadoop
stop-all.sh
14、查看启动的节点进程
jps
15、查看启动后的服务信息
master中应该有ResourceManager服务,slave中应该有nodemanager服务
查看集群状态:./bin/hdfs dfsadmin –report
查看文件块组成: ./bin/hdfsfsck / -files -blocks
查看各节点状态: http://master:50070
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>安装zookeeper
解压 tar –zxvf zookeeper-3.5.0.tar.gz
1.修改配置文件conf/ zoo_sample.cfg 为zoo.cfg
mv zoo_sample.cfg zoo.cfg
打开修改内容:
dataDir=/home/gj/zookeeper-3.5.0/data //数据目录,可随意定义
最后面添加:
server.1=zjenterprise02:2888:3888
server.2=zjenterprise03:2888:3888
server.3=zjenterprise04:2888:3888
// server.X=A:B:C
其中X是一个数字, 表示这是第几号server.
A是该server所在的IP地址.
B配置该server和集群中的leader交换消息所使用的端口.
C配置选举leader时所使用的端口.
注意这里需要创建data文件夹
进入data文件夹创建文件myid 内容为1
1表示这是第几号server, 与server.X=A:B:C中的X对应
2.将配置到的zookeeper拷贝到其他电脑(zjenterprise03,zjenterprise04)上
使用 scp -r 命令
分别修改 myid文件内容为2,3
1. 启动三个节点的 bin目录下的./zkServer.sh start
也可以将zookeeper 配置到环境变量里面
启动hadoop 和zookeeper(已配置到环境变量里面)
1.先启动zookeeper在zjenterprise05,zjenterprise06上
zkServer.sh start
查看状态zkServer.sh status(会发现有一个leader,两个follower)
2. 启动journalnode(在zjenterprise02上启动)
hadoop-daemons.sh start journalnode
3.格式化HDFS(在zjenterprise02上启动)
hadoop namenode -format
此时会在hadoop目录里面产生tmp文件夹,将这个文件夹拷贝到zjenterprise03上
3. 格式化ZK(在zjenterprise02上启动)
hdfs zkfc -formatZK
4. 启动hadoop(在zjenterprise02上启动)
start-all.sh
此时可能在h3上的resourceManager没有启动,可以进入h3启动start-yarn.sh
这时就可以通过web查看hadoop集群的各个状态,也可以用jps 命令查看进程
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>hbase 集群配置
1.conf/hbase-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_20
export HBASE_MANAGES_ZK=false
使用独立的ZooKeeper时需要修改HBASE_MANAGES_ZK值为false,为不使用默认ZooKeeper实例。
2. conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://zjenterprise02:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>zjenterprise02:60000</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
<description>The port master should bind to.</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zjenterprise05,zjenterprise06</value>
</property>
3.conf/ regionservers
zjenterprise05zjenterprise06
启动hbase
在zjenterprise01 上
start-hbase.sh
在zjenterprise02上
start-hbase.sh
这是可以通过web查看hbase的状态 ,会发现像namenode一样有一个Active 状态的hmaster和Standby 状态的hmaster