安装环境:html
1. 2台 namenode 10台 datanodejava
3. 安装目录:opt/softwarenode
jdk hadoop hbase zookeeperlinux
4.. zookeeper 3台就能够了shell
jdk rpm -ivh jdk-8u91-linux-x64.rpmapache
1. 修改hostname -> http://www.cnblogs.com/dkblog/archive/2011/11/02/2233123.htmlvim
须要修改两处:一处是 ,另外一处是/etc/hosts,只修改任一处会致使系统启动异常。首先切换到root用户。服务器
用任一款你喜好的编辑器打开该文件,里面有一行 HOSTNAME=localhost.localdomain (若是是默认的话),修改 localhost.localdomain 为你的主机名。并发
注: etc/hosts 这个文件是负责dns 解析的 将hostname 和 ip对应起来的 好比ping slave1 机器会知道对应的ipdom
在文件末尾加上 192.168.150.20 20-master1
reboot
!!!!!!!以root身份直接在/etc/ssh/sshd_config中找到#PermitRootLogin = yes ,将其去掉重启就能够了。
!!!!!!!发现winscp 调用putty很差用 直接启动putty就能够登录
将192.168.150.23 -> slave11 ping 测试链接 master 和 slave 互ping hostname 若是通了 证实能够连通了
注: 部分例子中hadoop用户自动忽略成root用户
具体来说就是 两步 : 1. 生成公钥私钥 2. 想免密码登录谁就将公钥加到谁的author..keys中
Master(NameNode | JobTracker)做为客户端,要实现无密码公钥认证,链接到服务器Salve(DataNode | Tasktracker)上时,须要在Master上生成一个密钥对,包括一个公钥和一个私钥,然后将公钥复制到全部的Slave上。当Master经过SSH链接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数以后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误以后就容许Master进行链接了。这就是一个公钥认证过程,其间不须要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
总的来讲就是用master的公钥在slave上加密,而后传回mater后用master本身的私钥解密创建链接 记住永远是要用本身的私钥解密
在Master节点上执行如下命令
ssh-keygen –t rsa –P ''
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。
接着在Master节点上作以下配置,把id_rsa.pub追加到受权的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用root用户登陆服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完以后记得重启SSH服务,才能使刚才设置有效。
service sshd restart
退出root登陆,使用普通用户验证是否成功。
ssh localhost
从上图中得知无密码登陆本级已经设置完毕,接下来的事儿是
scp ~/.ssh/id_rsa.pub 23-slave11:~/
由于我以前能ping通 第一台slave机器 192.168.150.23 在hosts中命名为23-slave11
因此我直接用scp将公钥进行复制:
1)查看slave11 中是否有这个公钥
由于还没配置好,登录的时候仍是须要密码的
能够看到公钥已经存进去了 id_rsa.pub
2)在/root/下面建立.ssh文件夹
mkdir ~/.ssh
而后是修改文件夹".ssh"的用户权限,把他的权限修改成"700",用下面命令执行:
chmod 700 ~/.ssh
3)追加到受权文件"authorized_keys"
到目前为止Master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把Master的公钥追加到Slave11的受权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
4)用root用户修改"/etc/ssh/sshd_config"
具体步骤参考前面Master的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。
修改配置文件:
用root用户登陆服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
service sshd restart
和Master无密码登陆全部Slave原理同样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)。
以slave11 登录 master1 为例
建立"Slave1.Hadoop"本身的公钥和私钥,并把本身的公钥追加到"authorized_keys"文件中。
1. 生成公钥私钥 钥匙对
ssh-keygen -t rsa -P ''
2 并把本身的公钥追加到"authorized_keys"文件中。用到的命令以下:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 并追加到"Master.Hadoop"的"authorized_keys"中:
scp ~/.ssh/id_rsa.pub 20-master1:~/
2)在"Master.Hadoop"服务器的操做
用到的命令以下:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
至此一个master slave对能够互相访问了
注: 本例中全部的软件都安装在/opt/software/下面
下载jdk 1.8 本例中有机器上面有jdk的rpm包
我直接scp过来了
scp jdk-8u91-linux-x64.rpm 60.12.160.158:~
切到20-master1 直接 rpm –ivh jdk-8u91-linux-x64.rpm
jdk 1.8 会安装到/usr/java下面
编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。
1)编辑"/etc/profile"文件
vim /etc/profile
2)添加Java环境变量
在"/etc/profile"文件的尾部添加如下内容:
# set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_91
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
3)使配置生效
保存并退出,执行下面命令使其配置当即生效。
source /etc/profile
4)使配置生效
java –version 发现jdk 仍是 1.7 的
缘由是原来机器上安装了openjdk 1.7 因此咱们要先卸载openjdk
直接用 rpm -qa | grep java
查找安装过的java 包
而后用命令:
yum -y remove 卸载
好比:
卸载完成后发现 java –version 已经无论用了
此后再安装 jdk 1.8
rpm –ivh jdk-8u91-linux-x64.rpm 就能够了
全部的机器上都要安装hadoop,如今就先在Master服务器安装,而后其余服务器按照步骤重复进行便可。安装和配置hadoop须要以"root"的身份进行。
安装hadoop到 /opt/software下
解压 hadoop.gz
tar -zxvf hadoop-2.5.2.tar.gz
给hadoop-2.5.2建立软连接
ln -s hadoop-2.5.2 hadoop
效果以下:
把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将如下语句添加到末尾,并使其有效:
# set hadoop path
export HADOOP_HOME=/opt/software/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
重启配置文件
Source /etc/profile
该"hadoop-env.sh"文件位于"/opt/software/hadoop/etc/hadoop"目录下。
在文件的末尾添加下面内容 JAVA_HOME
# set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_91
yarn-env.sh:
也是配置JAVA_HOME
Hadoop配置文件在conf目录下,以前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。因为Hadoop发展迅速,代码量急剧增长,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分红了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。
修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。
首先在hadoop根目录下建立一个tmp文件 备用
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://20-master1:9000</value>
</property>
</configuration>
备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须从新执行format才行,不然会出错。
在master的命令行终端执行以下命令建立hadoop的数据文件保存目录及元数据保存目录:
1. mkdir /opt/software/hadoop/hadoopdata
2. mkdir /opt/software/hadoop/hadoopname
Vi hdfs-site.xml:
在文件的<configuration></configuration>加入以下内容,保存退出
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/software/hadoop/hadoopdata/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/software/hadoop/hadoopdata/datanode</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>21-master2:9001</value>
</property>
</configuration>
修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
<configuration>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>240</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>48</value>
<final>true</final>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>6000</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>8000</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx5900m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx7900m</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
效果以下:
<configuration>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>4096</value>
</property>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>20-master1:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>20-master1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>20-master1:8040</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/opt/software/hadoop/logs/userlogs</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
</configuration>
23-slave11
24-slave12
25-slave13
slave4
slave5
slave6
slave7
slave8
slave9
slave10
注:本来是以ip地址的最后一组数字+slave编号命名的slave,可是发现名字太长了,因此该为直接slave+num了
bin/hdfs namenode -format
注意:这里的格式化文件系统并非硬盘格式化,只是针对主服务器hdfs-site.xml的dfs.namenode.name.dir和dfs.datanode.data.dir目录作相应的清理工做。
sbin/start-all.sh
sbin/stop-all.sh
jps 查看进程
hadoop dfsadmin –report 查看hadoop状态
也能够进入 下面的namenod 和slave 查看进程起来了没有
6.2.进入zookeeper的配置目录,首先把zoo_sample.cfg重命名一下,能够从新复制一遍,使用命令:
分别在datanode1,datanode2,datanode3的myid中写入对应的server.n中的n,即分别是1,2,3.
6.开启zookeeper服务,在三台datanode机器的zookeeper安装目录下使用命令:
bin/zkServer.sh start
Hbase 须要装在1个master上 和剩下的datanode上面
1. tar -zxvf hbase-0.94.2.tar.gz
7.2进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即:
1. JAVA_HOME=/usr/java/jdk1.7.0_09/
加入变量:
1. export HBASE_MANAGES_ZK=false
1. <property>
2. <name>hbase.rootdir</name>
3. <value>hdfs://namenode:9000/hbase</value>
4. </property>
5. <property>
6. <name>hbase.cluster.distributed</name>
7. <value>true</value>
8. </property>
9. <property>
10. <name>hbase.zookeeper.quorum</name>
11. <value>datanode1,datanode2,datanode3</value>
12. </property>
13. <property>
14. <name>hbase.zookeeper.property.dataDir</name>
15. <value>/home/cloud/project/tmp/zookeeper/data</value>
16. </property>
1. vim.tiny regionservers
加入以下内容:
1. datanode1
2. datanode2
3. datandoe3
1. scp -r hbase-0.94.2 datanode1:/home/cloud/project
2. scp -r hbase-0.94.2 datanode2:/home/cloud/project
3. scp -r hbase-0.94.2 datanode3:/home/cloud/project
1. bin/start-hbase.sh
可使用bin/hbaseshell 进入hbase自带的shell环境,而后使用命令version等,进行查看hbase信息及创建表等操做。