创建账户
使用root登 陆 所有机器后,所有的机器都 创建 hadoop 用 户
useradd hadoop
passwd hadoop
此 时 在 /home/ 下就会生成一个 hadoop 目 录 ,目 录 路径 为 /home/hadoop
创建相关的目录
定 义 需要数据及目 录 的存放路径
定 义 代 码及工具 存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定 义 数据 节 点存放的路径到跟目 录 下的hadoop文件夹, 这 里是数据 节 点存放目 录 需要有足够的空 间 存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
设 置可写权限
chmod -R 777 /hadoop
配置SSH无密码登陆
SSH 无密 码原理简介 :
首先在 hadoop1 上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4) 上。
然后当 master 通 过 SSH 连接 slave 时, slave 就会生成一个随机数并用 master 的公 钥对随机数进行加密,并发送给 master 。
最后 master 收到加密数之后再用私 钥解密,并将解密数回传给 slave , slave 确 认解密数无误之后就允许 master 不 输入密码进行连接了
2 ,具体步 骤(在root用户和hadoop用户登陆情况下执行)
1 、 执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对: cd .ssh 后 执行 ll
2 、把 id_rsa.pub 追加到授权的 key 里面去。 执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3 、修改权限: 执行 chmod 600 ~/.ssh/authorized_keys
解压目录hadoop
tar zxvf hadoop-2.6.2.tar.gz
创建软连接
cd /home/hadoop
ln -s /home/hadoop/source/hadoop-2.6.2 ./hadoop
源码配置修改
/etc/profile
配置 环境变量: vim /etc/profile
添加
export HADOOP_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
创建并配置hadoop-env.sh
vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
在末尾添加 export JAVA_HOME=/usr/java/jdk1.6.0_27
core-site.xml
在 configuration 节点 里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.201:9000</value>
</property>
添加 httpfs 的 选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.1.201</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
slave配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.1.202
192.168.1.203
192.168.1.204
配置hdfs-site.xml
vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加 节点
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.1.201:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.1.201:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.1.201:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.1.201:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.1.201:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.1.201:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23003</value>
</property>
配置yarn-site.xml
添加 节点
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.1.201:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.201:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.201:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.201:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.201:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置httpfs-site.xml
同步代码到其他机器
1.同步配置代 码
先在 slaves 的机器上也 创 建
mkdir -p /home/hadoop/source
部署hadoop代 码 , 创 建 软连接 ,然后只要同步修改 过 的etc/hadoop下的配置文件即可
2.同步 /etc/profile
3.同步 /etc/hosts
scp -r /etc/profile root@hadoop2:/etc/profile
scp -r /etc/hosts root@hadoop2:/etc/hosts
其他机器以此操作
Hadoop启动
格式化集群
$HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>
启动hdfs
执行
sbin/start-dfs.sh
开 启 hadoop dfs服 务
启动Yarn
开 启 yarn 资 源管理服 务
sbin/start-yarn.sh
启动httpfs
开 启 httpfs 服 务
sbin/httpfs.sh start
使得 对外 可以提高 http 的restful接口服 务
测试
安装结果验证
验证hdfs
在各台机器 执行 jps 看 进程 是否都已 经启动 了
# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
# jps
8966 Jps
31822 DataNode
31935 NodeManager
进程启动 正常
验证 是否可以登 陆
hadoop fs -ls hdfs://192.168.1.201:9000/
hadoop fs -mkdir hdfs://192.168.1.201:9000/testfolder
hadoop fs -copyFromLocal ./xxxx hdfs://192.168.1.201:9000/testfolder
hadoop fs -ls hdfs://192.168.1.201:9000/ testfolder
验证map/reduce
在 master1 上, 创建输入目录 :hadoop fs -mkdir hdfs://192.168.1.201:9000/input
将 /usr/hadoop/hadoop-2.0.1-alpha/ 目 录下的所有 txt 文件复制到 hdfs 分布式文件系 统的目录里,执行以下命令
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 执行 HADOOP 自 带的例子, wordcount 包,命令如下
cd /usr/hadoop/hadoop-2.0.1-alpha/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.0.1-alpha.jar wordcount hdfs://192.168.1.201:9000/input hdfs://192.168.1.201:9000/output
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 查看结果命令如下 :
# hadoop fs -ls hdfs://192.168.1.201:9000/output
Found 2 items
-rw-r--r-- 2 root supergroup 0 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/_SUCCESS
-rw-r--r-- 2 root supergroup 8739 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/part-r-00000
# hadoop fs -cat hdfs://192.168.1.201:9000/output/part-r-00000 即可看到每个 单词的数量
验证httpfs
HTTPFS操作:
OPEN,GETFILESTATUS,LISTSTATUS,GETHOMEDIRECTORY,GETCONTENTSUMMARY,GETFILECHECKSUM,GETDELEGATIONTOKEN,GETFILEBLOCKLOCATIONS,INSTRUMENTATION
GETHOMEDIRECTORY 路径无关,返回根 节点路径
http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETHOMEDIRECTORY&user.name=root
Path: "/user/root"
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETHOMEDIRECTORY&user.name=root
打开 / 下 载一个文件
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=open&user.name=root
LISTSTATUS 现实目录状态
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0?op=LISTSTATUS&user.name=root
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=LISTSTATUS&user.name=root
使用root登 陆 所有机器后,所有的机器都 创建 hadoop 用 户
useradd hadoop
passwd hadoop
此 时 在 /home/ 下就会生成一个 hadoop 目 录 ,目 录 路径 为 /home/hadoop
创建相关的目录
定 义 需要数据及目 录 的存放路径
定 义 代 码及工具 存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定 义 数据 节 点存放的路径到跟目 录 下的hadoop文件夹, 这 里是数据 节 点存放目 录 需要有足够的空 间 存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
设 置可写权限
chmod -R 777 /hadoop
配置SSH无密码登陆
SSH 无密 码原理简介 :
首先在 hadoop1 上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4) 上。
然后当 master 通 过 SSH 连接 slave 时, slave 就会生成一个随机数并用 master 的公 钥对随机数进行加密,并发送给 master 。
最后 master 收到加密数之后再用私 钥解密,并将解密数回传给 slave , slave 确 认解密数无误之后就允许 master 不 输入密码进行连接了
2 ,具体步 骤(在root用户和hadoop用户登陆情况下执行)
1 、 执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对: cd .ssh 后 执行 ll
2 、把 id_rsa.pub 追加到授权的 key 里面去。 执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3 、修改权限: 执行 chmod 600 ~/.ssh/authorized_keys
解压目录hadoop
tar zxvf hadoop-2.6.2.tar.gz
创建软连接
cd /home/hadoop
ln -s /home/hadoop/source/hadoop-2.6.2 ./hadoop
源码配置修改
/etc/profile
配置 环境变量: vim /etc/profile
添加
export HADOOP_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
创建并配置hadoop-env.sh
vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
在末尾添加 export JAVA_HOME=/usr/java/jdk1.6.0_27
core-site.xml
在 configuration 节点 里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.201:9000</value>
</property>
添加 httpfs 的 选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.1.201</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
slave配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.1.202
192.168.1.203
192.168.1.204
配置hdfs-site.xml
vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加 节点
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.1.201:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.1.201:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.1.201:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.1.201:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.1.201:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.1.201:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23003</value>
</property>
配置yarn-site.xml
添加 节点
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.1.201:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.201:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.201:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.201:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.201:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置httpfs-site.xml
同步代码到其他机器
1.同步配置代 码
先在 slaves 的机器上也 创 建
mkdir -p /home/hadoop/source
部署hadoop代 码 , 创 建 软连接 ,然后只要同步修改 过 的etc/hadoop下的配置文件即可
2.同步 /etc/profile
3.同步 /etc/hosts
scp -r /etc/profile root@hadoop2:/etc/profile
scp -r /etc/hosts root@hadoop2:/etc/hosts
其他机器以此操作
Hadoop启动
格式化集群
$HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>
启动hdfs
执行
sbin/start-dfs.sh
开 启 hadoop dfs服 务
启动Yarn
开 启 yarn 资 源管理服 务
sbin/start-yarn.sh
启动httpfs
开 启 httpfs 服 务
sbin/httpfs.sh start
使得 对外 可以提高 http 的restful接口服 务
测试
安装结果验证
验证hdfs
在各台机器 执行 jps 看 进程 是否都已 经启动 了
# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
# jps
8966 Jps
31822 DataNode
31935 NodeManager
进程启动 正常
验证 是否可以登 陆
hadoop fs -ls hdfs://192.168.1.201:9000/
hadoop fs -mkdir hdfs://192.168.1.201:9000/testfolder
hadoop fs -copyFromLocal ./xxxx hdfs://192.168.1.201:9000/testfolder
hadoop fs -ls hdfs://192.168.1.201:9000/ testfolder
验证map/reduce
在 master1 上, 创建输入目录 :hadoop fs -mkdir hdfs://192.168.1.201:9000/input
将 /usr/hadoop/hadoop-2.0.1-alpha/ 目 录下的所有 txt 文件复制到 hdfs 分布式文件系 统的目录里,执行以下命令
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 执行 HADOOP 自 带的例子, wordcount 包,命令如下
cd /usr/hadoop/hadoop-2.0.1-alpha/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.0.1-alpha.jar wordcount hdfs://192.168.1.201:9000/input hdfs://192.168.1.201:9000/output
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 查看结果命令如下 :
# hadoop fs -ls hdfs://192.168.1.201:9000/output
Found 2 items
-rw-r--r-- 2 root supergroup 0 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/_SUCCESS
-rw-r--r-- 2 root supergroup 8739 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/part-r-00000
# hadoop fs -cat hdfs://192.168.1.201:9000/output/part-r-00000 即可看到每个 单词的数量
验证httpfs
HTTPFS操作:
OPEN,GETFILESTATUS,LISTSTATUS,GETHOMEDIRECTORY,GETCONTENTSUMMARY,GETFILECHECKSUM,GETDELEGATIONTOKEN,GETFILEBLOCKLOCATIONS,INSTRUMENTATION
GETHOMEDIRECTORY 路径无关,返回根 节点路径
http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETHOMEDIRECTORY&user.name=root
Path: "/user/root"
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETHOMEDIRECTORY&user.name=root
打开 / 下 载一个文件
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=open&user.name=root
LISTSTATUS 现实目录状态
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0?op=LISTSTATUS&user.name=root
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=LISTSTATUS&user.name=root