前提 我们假设有三台机器分别为 master 192.168.0.106
slave1 192.168.0.105
slave2 192.168.0.107
他们的普通用户名字分别为 master slave1 slave2
安装hadoop集群真实环境大阶段分为三个步骤
1.安装jdk
2.安装hadoop
3.安装ssh
下面从这三个方面进行介绍保证成功安装以及部署
1.安装jdk不推荐利用系统方法 sudo apt-get install XX
这种方式
推荐使用从官网下载jdk1.8的压缩包,实现免安装版的
2.安装hadoop
推荐使用从官网下载hadoop1.2.1的压缩包,实现免安装版的
1,2安装方法类似
我们假设jdk hadoop安装到 unbuntu的系统文件夹 /opt
/opt是系统文件夹 要修改权限
a. chmod a+x /opt
b. 拷贝hadoop-1.2.1.zip jdk1.8.0_66.zip
c. sudo tar -xvf jdk1.8.0_66.tar.gz (使用tab按键进行补全)
d. sudo tar -xvf hadoop-1.2.1.tar.gz
上述已经解压完毕
接下来需要配置环境变量,不在bin目录下便可以执行java 指令和hadoop指令
export JAVA_HOME=/opt/jdk1.8.0_66
export PATH=/opt/jdk1.8.0_66/bin:${PATH}
执行java -version 看到相关jdk信息安装成功,不过有一点小问题需要交代,在下文中hadoop
安装之后一起叙述
配置hadoop环境变量
export HADOOP_HOME=/opt/hadoop-1.2.1
export PATH=/opt/hadoop-1.2.1/bin:${PATH}
hadoop -version
执行java -version 看到相关jdk信息安装成功
问题:当我们把当前终端窗口关闭掉后 ,
下次重新打开终端执行java -version hadoop -version
发现错误
java 未找到指令
hadoop未找到指令
这样错误的原因是因为 并没有在unbuntu的/etc/profile
添加环境变量的语句
终端执行 sudo gedit /etc/profile
添加
export HADOOP_HOME=/opt/hadoop-1.2.1
export JAVA_HOME=/opt/jdk1.8.0_66
expot PATH=.:$/HADOOP_HOME/bin:$/JAVA_HOME/bin:${PATH}
这样就解决了,下次打开终端指令找到不到的原因
总结 上文 我们解决了1.2步骤 jdk,hadoop的安装
多台机器同理安装,也可以等建立了ssh连接后 使用scp指令
拷贝文件使多台机器达到配置环境一样的需求
3.ssh安装
公钥 告诉别人自己的公钥
私钥 只是留给自己使用,谁也不能告诉
a把自己的公钥 给了 b,c
a发了一段信息给b,c
b,c用公钥解密看到了信息,除了b,c以外的用户都看不到
这个时候,b发送给a一个信息,信息的内容并不想让c知道
b发的信息通过a给b,c的公钥加密
a用自己的私钥解密
ssh 本地免密码登录原理
1.生成公钥
2.id_rsa.pub拷贝至authorized_keys
ssh localhost 测试是否需要在输入密码
如果需要修改文件权限即可解决
ssh 不同物理机免密码登录原理
1.master生成公钥
2.master把公钥发送给slave1 slave2
3.并拷贝至slave1,slave2的.ssh目录下的authorized_keys
如果出现permission deny等情况请你考虑authoried_keys文件权限是否为600
如果是检测 .ssh文件夹权限 以及父目录权限,本文之前博客有描述
ssh 安装生成公钥前往要用rsa算法!!!!在stackoverflow查询到
dsa算法在最新版的ssh安装是禁止被使用的!!就会出现ssh 'slave1@192.168.0.107' (注意这是 ssh 免密码登录普通用户slave )
ssh 192.168.0.107(ip地址) (事实上这是 免密码登录root用户!)
1、安装ssh
直接 sudo apt-get install openssh-server
2、查看ssh运行状态
ps -e | grep ssh
如果发现 sshd 和 ssh-agent 即表明 ssh服务基本运行正常
3、生成公钥和私钥
ssh-keygen -t rsa -P ""
4、将公钥追加到文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5、测试ssh localhost
如果发现不用输入密码就可以登录那么 ssh无密码机制就算建立成功了。
6、失败原因之一:.ssh及其下属子文件的权限问题:
首选.ssh目录权限是700, 两个dsa 和 rsa的 私钥权限是600,其余文件权限是644.
ssh 不同物理机的具体步奏
1.首先我们需要在A机器上生成一对公钥和密钥对,生成的方法如下:
ssh-keygen -t rsa -P ''
2.使用如上述的命令,我们可以直接将A机器上的公钥拷贝到目标登录机上面,
实际上是复制到了 /root/.ssh/authorized_keys文件里
,其实我们也可以直接使用scp来进行拷贝,但要注意的是保证权限能够访问
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1@192.168.0.107
注意:第一需要输入密码来进行拷贝
ssh 'slave1@192.168.0.107' 就再也不提示输入密码了
Last login: Tue Aug 30 11:42:01 2016 from 10.16.59.100
可能会遇到这样的问题 重复生成了公钥
ssh出错 sign_and_send_pubkey: signing failed: agent refused operation
Posted on2016-05-26
在服务器添加完公钥之后,ssh服务器然后报了这个错误
sign_and_send_pubkey: signing failed: agent refused operation
然后执行了以下命令才好。。
eval "$(ssh-agent -s)"
ssh-add
到此,ssh本地免密码不同物理机免密码成功,
我们想实现master ,slave1,slave2互相面密码登录就互发公钥就好啦
接下来是hadoop的配置
cd /opt/hadoop-1.2.1/conf
要修改如下几个文件 修改之后将 hadoop1.2.1 利用scp指令拷贝到其他机器上相同文件夹覆盖即可
hadoop.env文件修改jdk路径默认的是系统的
# The java implementation to use. Required.
export JAVA_HOME=/opt/jdk1.8.0_66/
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.106:9000</value> (填写主机地址)
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/${user.name}/hadoop-data/tmp</value> (生成hadoop存储data的文件夹)
</property>
</configuration>
hdfs.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/${user.name}/hadoop-data/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/${user.name}/hadoop-data/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
mapred-site
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.0.106:9001</value>
</property>
</configuration>
slaves
192.168.0.105
192.168.0.107
填写其他子机器的ip地址
然后通过指令scp 拷贝其他的机器相同路径
U盘也可以。。不推荐
启动hadoop
执行指令
hadoop namenode -format
cd /opt/hadoop-1.2.1/bin
执行 start-dfs
slave1 192.168.0.105
slave2 192.168.0.107
他们的普通用户名字分别为 master slave1 slave2
安装hadoop集群真实环境大阶段分为三个步骤
1.安装jdk
2.安装hadoop
3.安装ssh
下面从这三个方面进行介绍保证成功安装以及部署
1.安装jdk不推荐利用系统方法 sudo apt-get install XX
这种方式
推荐使用从官网下载jdk1.8的压缩包,实现免安装版的
2.安装hadoop
推荐使用从官网下载hadoop1.2.1的压缩包,实现免安装版的
1,2安装方法类似
我们假设jdk hadoop安装到 unbuntu的系统文件夹 /opt
/opt是系统文件夹 要修改权限
a. chmod a+x /opt
b. 拷贝hadoop-1.2.1.zip jdk1.8.0_66.zip
c. sudo tar -xvf jdk1.8.0_66.tar.gz (使用tab按键进行补全)
d. sudo tar -xvf hadoop-1.2.1.tar.gz
上述已经解压完毕
接下来需要配置环境变量,不在bin目录下便可以执行java 指令和hadoop指令
export JAVA_HOME=/opt/jdk1.8.0_66
export PATH=/opt/jdk1.8.0_66/bin:${PATH}
执行java -version 看到相关jdk信息安装成功,不过有一点小问题需要交代,在下文中hadoop
安装之后一起叙述
配置hadoop环境变量
export HADOOP_HOME=/opt/hadoop-1.2.1
export PATH=/opt/hadoop-1.2.1/bin:${PATH}
hadoop -version
执行java -version 看到相关jdk信息安装成功
问题:当我们把当前终端窗口关闭掉后 ,
下次重新打开终端执行java -version hadoop -version
发现错误
java 未找到指令
hadoop未找到指令
这样错误的原因是因为 并没有在unbuntu的/etc/profile
添加环境变量的语句
终端执行 sudo gedit /etc/profile
添加
export HADOOP_HOME=/opt/hadoop-1.2.1
export JAVA_HOME=/opt/jdk1.8.0_66
expot PATH=.:$/HADOOP_HOME/bin:$/JAVA_HOME/bin:${PATH}
这样就解决了,下次打开终端指令找到不到的原因
总结 上文 我们解决了1.2步骤 jdk,hadoop的安装
多台机器同理安装,也可以等建立了ssh连接后 使用scp指令
拷贝文件使多台机器达到配置环境一样的需求
3.ssh安装
公钥 告诉别人自己的公钥
私钥 只是留给自己使用,谁也不能告诉
a把自己的公钥 给了 b,c
a发了一段信息给b,c
b,c用公钥解密看到了信息,除了b,c以外的用户都看不到
这个时候,b发送给a一个信息,信息的内容并不想让c知道
b发的信息通过a给b,c的公钥加密
a用自己的私钥解密
ssh 本地免密码登录原理
1.生成公钥
2.id_rsa.pub拷贝至authorized_keys
ssh localhost 测试是否需要在输入密码
如果需要修改文件权限即可解决
ssh 不同物理机免密码登录原理
1.master生成公钥
2.master把公钥发送给slave1 slave2
3.并拷贝至slave1,slave2的.ssh目录下的authorized_keys
如果出现permission deny等情况请你考虑authoried_keys文件权限是否为600
如果是检测 .ssh文件夹权限 以及父目录权限,本文之前博客有描述
ssh 安装生成公钥前往要用rsa算法!!!!在stackoverflow查询到
dsa算法在最新版的ssh安装是禁止被使用的!!就会出现ssh 'slave1@192.168.0.107' (注意这是 ssh 免密码登录普通用户slave )
ssh 192.168.0.107(ip地址) (事实上这是 免密码登录root用户!)
1、安装ssh
直接 sudo apt-get install openssh-server
2、查看ssh运行状态
ps -e | grep ssh
如果发现 sshd 和 ssh-agent 即表明 ssh服务基本运行正常
3、生成公钥和私钥
ssh-keygen -t rsa -P ""
4、将公钥追加到文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5、测试ssh localhost
如果发现不用输入密码就可以登录那么 ssh无密码机制就算建立成功了。
6、失败原因之一:.ssh及其下属子文件的权限问题:
首选.ssh目录权限是700, 两个dsa 和 rsa的 私钥权限是600,其余文件权限是644.
ssh 不同物理机的具体步奏
1.首先我们需要在A机器上生成一对公钥和密钥对,生成的方法如下:
ssh-keygen -t rsa -P ''
2.使用如上述的命令,我们可以直接将A机器上的公钥拷贝到目标登录机上面,
实际上是复制到了 /root/.ssh/authorized_keys文件里
,其实我们也可以直接使用scp来进行拷贝,但要注意的是保证权限能够访问
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1@192.168.0.107
注意:第一需要输入密码来进行拷贝
ssh 'slave1@192.168.0.107' 就再也不提示输入密码了
Last login: Tue Aug 30 11:42:01 2016 from 10.16.59.100
可能会遇到这样的问题 重复生成了公钥
ssh出错 sign_and_send_pubkey: signing failed: agent refused operation
Posted on2016-05-26
在服务器添加完公钥之后,ssh服务器然后报了这个错误
sign_and_send_pubkey: signing failed: agent refused operation
然后执行了以下命令才好。。
eval "$(ssh-agent -s)"
ssh-add
到此,ssh本地免密码不同物理机免密码成功,
我们想实现master ,slave1,slave2互相面密码登录就互发公钥就好啦
接下来是hadoop的配置
cd /opt/hadoop-1.2.1/conf
要修改如下几个文件 修改之后将 hadoop1.2.1 利用scp指令拷贝到其他机器上相同文件夹覆盖即可
hadoop.env文件修改jdk路径默认的是系统的
# The java implementation to use. Required.
export JAVA_HOME=/opt/jdk1.8.0_66/
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.106:9000</value> (填写主机地址)
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/${user.name}/hadoop-data/tmp</value> (生成hadoop存储data的文件夹)
</property>
</configuration>
hdfs.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/${user.name}/hadoop-data/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/${user.name}/hadoop-data/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
mapred-site
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.0.106:9001</value>
</property>
</configuration>
slaves
192.168.0.105
192.168.0.107
填写其他子机器的ip地址
然后通过指令scp 拷贝其他的机器相同路径
U盘也可以。。不推荐
启动hadoop
执行指令
hadoop namenode -format
cd /opt/hadoop-1.2.1/bin
执行 start-dfs
就会看到 stat namenode start datanode start jobtracker 到此hadoop真实环境部署完全成功!
修改/etc/hosts
/etc/hostname 就不叙述了小问题
相关资源下载链接
http://download.csdn.net/detail/sz457763638/9718176