hadoop的
存储:
hdfs
运算:
MapReduce: map(抽取, 映射)+reduce(化简)
hadoop部署配置:
1.独立模式
默认就是独立模式
hadoop fs -ls / 列出的文件和Linux本身的文件一模一样,文件系统使用本地库文件,不是分布式文件系统
2.伪分布模式:模拟一个集群
2.1 基础配置
参考Hadoop.The.Definitive.Guide.3rd.Edition.pdf文件中的配置实例,配置4个文件
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
</configuration>
2.2 配置ssh无密码登录
1)SSH无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,
需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,
Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,
并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。
重要过程是将客户端Master复制到Slave上。
检测是否安装有ssh,service sshd status,redhat已安装有ssh
2)生成公钥私钥
正确:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(错误:ssh-keygen -t rsa -P '' -f /home/wpy/hadoop/ssh/.ssh/id_rsa,生成秘钥文件不能随意制定位置,
参考 http://blog.itpub.net/25851087/viewspace-1262468/ )
3)将公钥追加到文件
在/home/wpy/.ssh文件夹中执行 cat id_rsa.pub >> authorized_keys
4)测试ssh登录
第一次登录 ssh localhost,成功后.ssh文件夹下多一个文件known_hosts
退出再次登录就不要输入密码了。
如果还需要输入密码,修改文件权限:
4.1 先删除已经产生的两个文件,由于文件夹权限设置不对,这两个文件生成的也不对,需要重新生成:
rm -f known_hosts
rm -f authorized_keys
4.2 然后重新执行 cat id_rsa.pub >> authorized_keys
4.3 最后再修改几个文件夹权限
chmod 644(g-w) authorized_keys
chmod 755 /home/wpy
chmod 755 /home/wpy/.ssh
再次登录就好了
Last login: Tue May 17 14:58:30 2016 from localhost
2.3 格式化hdfs文件系统
hadoop namenode -format
2.4 启动或停止守护进程
注意启动顺序,并且因为是用hadoop_mode2,所以还应该制定使用的配置文件,启动会较慢
启动namenode:
start-dfs.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
启动yarn:
start-yarn.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
还可以全部启动:
start-all.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
查看是否成功:
可以jps/jps -l 查看启动的进程
还可以浏览器方式:
namenode; http://localhost:50070/
资源管理器: http://localhost:8088/
停止进程(注意顺序):
stop-yarn.sh
stop-dfs.sh
// stop-all.sh
jps查看进程全部停掉
2.5 配置自定义的hadoop配置文件根目录,这一步骤可以在前面制定启动就不用加--config参数了
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2, 但是这只对本次回话有效,重启后无效
注意:如果要在/etc/environment中来配置的话,要这么设置
HADOOP_CONF_DIR=/usr/wpysoft/hadoop-2.7.1/etc/hadoop_mode2
(不能写成HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2,因为不识别$HADOOP_INSTALL)
2.6 查看hadoop根目录
hadoop fs -ls /
查看当前用户所在的用户组:
id + wpy
2.7 常见问题处理
2.7.1 native 警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
一种情况是hadoop的版本和Linux版本不一致,一个32位,一个64位,按如下排除
hadoop 32/64位查看:hadoop-2.7.1/lib/native目录下, file libhadoop.so.1.0.0
linux 32/64位查看:file /sbin/init
如果都是一样的,那么就是Hadoop自带的native包过旧,需要更新而已,替换个即可,进入hadoop目录的native目录替换一下
方式一:用比较新的native-x64.rar替换hadoop中native下的内容,简单容易
方式二(可能行):
http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 网站下载 hadoop-native-64-2.7.0.tar
tar -x hadoop-native-64-2.7.0.tar -C hadoop根目录/lib/native/
都是替换native中内容
2.7.2 写日志异常导致的不能启动
chown: changing ownership of `/usr/wpysoft/hadoop-2.7.1/logs': Operation not permitted
可能logs文件夹目录是root用户创建的,删除logs即可
2.7.3 datanode未启动
3.完全分布式模式
在多个主机上
修改hostname;vi /etc/sysconfig/network
更改 HOSTNAME=localhost.localdomain 即可
改后需要重启
由于hadoop默认找的配置是hadoop目录,新创建的完全分布式hadoop_mode3,如果要使用hadoop_mode3的配置,有两种办法
第一种:修改/etc/environment配置文件,指向新目录
第二种: 删掉/etc/environment中HADOOP_CONF_DIR的配置,
创建一个符号链接(相当于快捷方式),
ln -s hadoop hadoop_mode3
准备工作:
修改redhat-2的hostname为s0,修改hadoop的配置HADOOP_CONF_DIR,指向hadoop_mode3
cp -r hadoop_mode2 hadoop_mode3
1.以redhat-2为模板,完全克隆3个备份机,分别为s1,s2,s3
这四个机器中,主从模式(即master/slaves):
一个作为名称节点
一个作为名称节点的副本
其他两个作为数据节点
redhat-2: s0:192.168.198.130
redhat-21: s1:192.168.198.132
redhat-22: s2:192.168.198.133
redhat-23: s3:192.168.198.134
2.修改他们的hostname为s1,s2,s3
3.修改hosts文件,先修改模板机hosts文件/etc/hosts,增加配置
192.168.198.130 s0
192.168.198.132 s1
192.168.198.133 s2
192.168.198.134 s3
把上述配置同样的方式增加到3个备份机中去,由于host文件都一样,可以远程copy过去覆盖掉源文件
scp /etc/hosts root@192.168.198.132:/etc/
scp /etc/hosts root@192.168.198.133:/etc/
scp /etc/hosts root@192.168.198.134:/etc/
测试是否OK, ping s0,ping s1,ping s2,ping s3, cat /etc/hosts文件看看是否更改成功
再测试远程登录ssh s1,ssh s2,ssh s3看看能否远程登录几个备份机,不需要输入密码
4.修改hadoop配置文件
先修改模板机的hadoop配置文件
core-site.xml中修改localhost为s0
hdfs-site.xml中修改副本数为2
yarn-site.xml中修改localhost为s0
修改slaves文件localhost为s1,s2,即以s1,s2作为备份机
s1
s2
不能写成s1,s2
接下来把修改过的配置都覆盖到其他机上去,可直接覆盖hadoop_mode3整个目录
scp -r hadoop_mode3 wpy@s1:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 wpy@s2:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 wpy@s3:/usr/wpysoft/hadoop-2.7.1/etc
检查是否修改成功,ssh s1,s2,s3/exit 远程登录上去查看文件
可以直接查看文件 ssh s1 cat 文件路径文件
5.格式化文件系统(修改过配置文件再格式化一次)
hadoop namenode -format
6.启动集群
在s0上start-all.sh
可以查看jps, ssh s1 jps, ssh s2 jps ,ssh s3 jps
他们有的启动名称节点有的启动数据节点
存储:
hdfs
运算:
MapReduce: map(抽取, 映射)+reduce(化简)
hadoop部署配置:
1.独立模式
默认就是独立模式
hadoop fs -ls / 列出的文件和Linux本身的文件一模一样,文件系统使用本地库文件,不是分布式文件系统
2.伪分布模式:模拟一个集群
2.1 基础配置
参考Hadoop.The.Definitive.Guide.3rd.Edition.pdf文件中的配置实例,配置4个文件
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
</configuration>
2.2 配置ssh无密码登录
1)SSH无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,
需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,
Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,
并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。
重要过程是将客户端Master复制到Slave上。
检测是否安装有ssh,service sshd status,redhat已安装有ssh
2)生成公钥私钥
正确:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(错误:ssh-keygen -t rsa -P '' -f /home/wpy/hadoop/ssh/.ssh/id_rsa,生成秘钥文件不能随意制定位置,
参考 http://blog.itpub.net/25851087/viewspace-1262468/ )
3)将公钥追加到文件
在/home/wpy/.ssh文件夹中执行 cat id_rsa.pub >> authorized_keys
4)测试ssh登录
第一次登录 ssh localhost,成功后.ssh文件夹下多一个文件known_hosts
退出再次登录就不要输入密码了。
如果还需要输入密码,修改文件权限:
4.1 先删除已经产生的两个文件,由于文件夹权限设置不对,这两个文件生成的也不对,需要重新生成:
rm -f known_hosts
rm -f authorized_keys
4.2 然后重新执行 cat id_rsa.pub >> authorized_keys
4.3 最后再修改几个文件夹权限
chmod 644(g-w) authorized_keys
chmod 755 /home/wpy
chmod 755 /home/wpy/.ssh
再次登录就好了
Last login: Tue May 17 14:58:30 2016 from localhost
2.3 格式化hdfs文件系统
hadoop namenode -format
2.4 启动或停止守护进程
注意启动顺序,并且因为是用hadoop_mode2,所以还应该制定使用的配置文件,启动会较慢
启动namenode:
start-dfs.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
启动yarn:
start-yarn.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
还可以全部启动:
start-all.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
查看是否成功:
可以jps/jps -l 查看启动的进程
还可以浏览器方式:
namenode; http://localhost:50070/
资源管理器: http://localhost:8088/
停止进程(注意顺序):
stop-yarn.sh
stop-dfs.sh
// stop-all.sh
jps查看进程全部停掉
2.5 配置自定义的hadoop配置文件根目录,这一步骤可以在前面制定启动就不用加--config参数了
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2, 但是这只对本次回话有效,重启后无效
注意:如果要在/etc/environment中来配置的话,要这么设置
HADOOP_CONF_DIR=/usr/wpysoft/hadoop-2.7.1/etc/hadoop_mode2
(不能写成HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2,因为不识别$HADOOP_INSTALL)
2.6 查看hadoop根目录
hadoop fs -ls /
查看当前用户所在的用户组:
id + wpy
2.7 常见问题处理
2.7.1 native 警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
一种情况是hadoop的版本和Linux版本不一致,一个32位,一个64位,按如下排除
hadoop 32/64位查看:hadoop-2.7.1/lib/native目录下, file libhadoop.so.1.0.0
linux 32/64位查看:file /sbin/init
如果都是一样的,那么就是Hadoop自带的native包过旧,需要更新而已,替换个即可,进入hadoop目录的native目录替换一下
方式一:用比较新的native-x64.rar替换hadoop中native下的内容,简单容易
方式二(可能行):
http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 网站下载 hadoop-native-64-2.7.0.tar
tar -x hadoop-native-64-2.7.0.tar -C hadoop根目录/lib/native/
都是替换native中内容
2.7.2 写日志异常导致的不能启动
chown: changing ownership of `/usr/wpysoft/hadoop-2.7.1/logs': Operation not permitted
可能logs文件夹目录是root用户创建的,删除logs即可
2.7.3 datanode未启动
3.完全分布式模式
在多个主机上
修改hostname;vi /etc/sysconfig/network
更改 HOSTNAME=localhost.localdomain 即可
改后需要重启
由于hadoop默认找的配置是hadoop目录,新创建的完全分布式hadoop_mode3,如果要使用hadoop_mode3的配置,有两种办法
第一种:修改/etc/environment配置文件,指向新目录
第二种: 删掉/etc/environment中HADOOP_CONF_DIR的配置,
创建一个符号链接(相当于快捷方式),
ln -s hadoop hadoop_mode3
准备工作:
修改redhat-2的hostname为s0,修改hadoop的配置HADOOP_CONF_DIR,指向hadoop_mode3
cp -r hadoop_mode2 hadoop_mode3
1.以redhat-2为模板,完全克隆3个备份机,分别为s1,s2,s3
这四个机器中,主从模式(即master/slaves):
一个作为名称节点
一个作为名称节点的副本
其他两个作为数据节点
redhat-2: s0:192.168.198.130
redhat-21: s1:192.168.198.132
redhat-22: s2:192.168.198.133
redhat-23: s3:192.168.198.134
2.修改他们的hostname为s1,s2,s3
3.修改hosts文件,先修改模板机hosts文件/etc/hosts,增加配置
192.168.198.130 s0
192.168.198.132 s1
192.168.198.133 s2
192.168.198.134 s3
把上述配置同样的方式增加到3个备份机中去,由于host文件都一样,可以远程copy过去覆盖掉源文件
scp /etc/hosts root@192.168.198.132:/etc/
scp /etc/hosts root@192.168.198.133:/etc/
scp /etc/hosts root@192.168.198.134:/etc/
测试是否OK, ping s0,ping s1,ping s2,ping s3, cat /etc/hosts文件看看是否更改成功
再测试远程登录ssh s1,ssh s2,ssh s3看看能否远程登录几个备份机,不需要输入密码
4.修改hadoop配置文件
先修改模板机的hadoop配置文件
core-site.xml中修改localhost为s0
hdfs-site.xml中修改副本数为2
yarn-site.xml中修改localhost为s0
修改slaves文件localhost为s1,s2,即以s1,s2作为备份机
s1
s2
不能写成s1,s2
接下来把修改过的配置都覆盖到其他机上去,可直接覆盖hadoop_mode3整个目录
scp -r hadoop_mode3 wpy@s1:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 wpy@s2:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 wpy@s3:/usr/wpysoft/hadoop-2.7.1/etc
检查是否修改成功,ssh s1,s2,s3/exit 远程登录上去查看文件
可以直接查看文件 ssh s1 cat 文件路径文件
5.格式化文件系统(修改过配置文件再格式化一次)
hadoop namenode -format
6.启动集群
在s0上start-all.sh
可以查看jps, ssh s1 jps, ssh s2 jps ,ssh s3 jps
他们有的启动名称节点有的启动数据节点