Hadoop 学习
一、 CentOS 6.5 配置 hadoop 2.6.0 伪分布式
注:步骤顺序尽量不要乱
1. 关闭防火墙
2. 关闭 SELinux
3. 配置 ip
4. 修改主机名
5. 主机和 ip 地址对应(必须配置否则报错)
6. 创建用户组和用户
使用 su 命令切换用户为 root。
groupadd hadoop
useradd -g hadoop hadoop
passwd hadoop #为用户添加密码 可以不设置密码
7. 配置 java 环境
Java 环境:jdk1.7.0_75(hadoop-2.6.0.tar.gz)
使用命令使配置立即生效,避免重启:source /etc/profile
8. 安装 ssh
rpm -qa |grep ssh #检查是否装了 SSH 包 (如果安装了下面不用执行)
yum install openssh-server
chkconfig --list sshd #检查 SSHD 是否设置为开机启动
chkconfig --level 2345 sshd on #如果没设置启动就设置下.
service sshd restart
# 安装 ssh
#重新启动
9. 配置 ssh 无密码登录
切换至 hadoop 用户
su hadoop
生成密钥
ssh-keygen -t rsa -P "" #秘钥为空字符串
执行后会在.ssh 目录下生成 id_rsa 和 id_rsa.pub 两个文件
进入.ssh 目录,并将 id_rsa.pub 追加到 authorized_keys 文件中
cd ~/.ssh/
cp ~/.ssh/id_rsa.pub
chmod 644 authorized_keys # 修改用户权限
~/.ssh/authorized (cat id_rsa.pub >> authorized_keys)
测试是否可以登录
ssh localhost# 执行后会提示输入 yes or no. 输入 yes 后 如果提示为最后一次登
录时间 则表明成功。
ssh hadoop-master# 执行后会提示输入 yes or no. 输入 yes 后 如果提示为最后
一次登
10.安装 hadoop
1) 将下载的 hadoop 解压并移动到期望的安装目录,修改其访问权限
tar -xvf hadoop-2.6.0.tar.gz
mv hadoop-2.6.0 /usr/opt/hadoop
chmod -R 775 /usr/opt/hadoop
chown -R hadoop:hadoop /usr/opt/hadoop
2) 配置 hadoop 的环境变量(所有的环境变量都是必须的)
su
vim /etc/profile
export HADOOP_INSTALL=/opt/modules/hadoop
export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin${PATH}
export HADOOP_MAPRED_HOME=${HADOOP_INSTALL}
export HADOOP_COMMON_HOME=${HADOOP_INSTALL}
export HADOOP_HDFS_HOME=${HADOOP_INSTALL}
export YARN_HOME=${HADOOP_INSTALLL}
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/natvie
export
HADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib:${HADOOP_INSTALL}/lib/
native"
3) 设置 hadoop-env.sh 中的 java 环境变量
cd /opt/modules/hadoop
vim ./etc/hadoop/hadoop-env.sh
4) 配置伪分布式
hadoop 的配置文件主要有 core-site.xml 、 hdfs-site.xml 、 yarn-site.xml 三个
文件。
cd /opt/modules/hadoop/etc/hadoop/
vim core-site.xml
hadoop.tmp.dir
/opt/modules/hadoop/tmp
fs.defaultFS
hdfs://hadoop-master:9000
vim hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
file:/opt/modules/hadoop/dfs/name
dfs.datanode.data.dir
file:/opt/modules/hadoop/dfs/data
<!--这个属性节点是为了防止后面 eclipse 存在
拒绝读写设置的 -->
dfs.permissions
false
vim yarn-site.xml
mapreduce.framework.name
yarn
yarn.nodemanager.aux-services
mapreduce_shuffle
接下来创建需要的文件夹
cd /opt/modules/hadoop/
mkdir tmp dfs dfs/name dfs/data
运行
首先格式化文件系统
bin/hdfs namenode –format
启动
sbin/start-dfs.sh
sbin/start-yarn.sh
提示如下则表明成功了
Starting namenodes on [localhost]
localhost:
starting
namenode,
/usr/opt/hadoop-2.6.0/logs/hadoop-hadoop-namenode-.out
localhost:
starting
datanode,
/usr/opt/hadoop-2.6.0/logs/hadoop-hadoop-datanode-.out
Starting secondary namenodes [0.0.0.0]
logging
logging
starting
logging
05.0.0.0.0:
/usr/opt/hadoop-2.6.0/logs/hadoop-hadoop-secondarynamenode-.out
查看:
http://hadoop-master:50070
secondarynamenode,
to
to
to
linux 学习
配置环境
1. 配置 java 环境变量
一. 解压安装 jdk
安装方式:在 shell 终端下进入 jdk-6u14-linux-i586.bin 文件所在目录,
执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意
的时候,输入 yes,回车。之后会在当前目录下生成一个 jdk1.6.0_14 目录,你可以将它
复制到 任何一个目录下。
配置方式(推荐):在 shell 终端下,执行命令直接解压缩即可。
tar -zxvf
jdk-7u75-linux-x64.tar.gz
二. 需要配置的环境变量
1. PATH 环境变量。作用是指定命令搜索路径,在 shell 下面执行命令时,它会到 PATH
变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk 安装目录下的
bin 目 录 增加 到 现 有 的 PATH 变 量 中,bin 目 录 中包 含 经 常 要用 到 的 可 执行 文 件 如
javac/java/javadoc 等待,设置好 PATH 变量后,就可以在任何目录下执行 javac/java 等
工具了。
2. CLASSPATH 环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是
能够找到它们了,JVM 就是通过 CLASSPTH 来寻找类的。我们 需要把 jdk 安装目录下的
lib 子目录中的 dt.jar 和 tools.jar 设置到 CLASSPATH 中,当然,当前目录“.”也必须加入
到该变量中。
3. JAVA_HOME 环境变量。它指向 jdk 的安装目录,Eclipse/NetBeans/Tomcat 等软件就是
通过搜索 JAVA_HOME 变量来找到并使用安装好的 jdk。
三. 三种配置环境变量的方法
1. 修改/etc/profile 文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的 shell 都有权
使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开/etc/profile
·在 profile 文件末尾加入:
export JAVA_HOME=/opt/modules/jdk7
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登录
·注解
a. 你要将 /usr/share/jdk1.6.0_14 改为你的 jdk 安装目录
b. linux 下用冒号“:”来分隔路径
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
常见的错误。
d. CLASSPATH 中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export 是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
2. 修改.bash_profile 文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给
某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile 文
件就可以了。
·用文本编辑器打开用户目录下的.bash_profile 文件
·在.bash_profile 文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登录
3. 直接在 shell 下设置变量
不赞成使用这种方法,因为换个 shell,你的设置就无效了,因此这种方法仅仅是临时
使用,以后要使用的时候又要重新设置,比较麻烦。
只需在 shell 终端执行下列命令:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
四. 测试 jdk
1. 用文本编辑器新建一个 Test.java 文件,在其中输入以下代码并保存:
public class test {
public static void main(String args[]) {
System.out.println("A new jdk test !");
}
}
2. 编译:在 shell 终端执行命令 javac Test.java
3. 运行:在 shell 终端执行命令 java Test
当 shell 下出现“A new jdk test !”字样则 jdk 运行正常。
五. 卸载 jdk
·找到 jdk 安装目录的_uninst 子目录
·在 shell 终端执行命令./uninstall.sh 即可卸载 jdk。
2. CentOS 下添加 Root 权限用户(超级用户)方法
//添加一个名为 chenjiafa 的用户
//修改密码
1、添加普通用户
[root@server ~]# useradd chenjiafa
[root@server ~]# passwd chenjiafa
Changing password for user chenjiafa.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
2、赋予 root 权限
方法 1):修改/etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
//在这里输入新密码
//再次输入新密码
然后修改用户,使其属于 root 组(wheel),命令如下:
[root@server ~]# usermod -g root chenjiafa
修改完毕,用 chenjiafa 帐号登录,然后用命令 su –切换,即可获得 root 权限进行操
作。
方法 2)(推荐):修改/etc/sudoers 文件,找到下面一行,在 root 下面添加一行,如下
所示:
修改完毕,用 chenjiafa 帐号登录,然后用命令 su –,即可获得 root 权限进行操作。
方法 3):修改/etc/passwd 文件,找到如下行,把用户 ID 修改为 0,如下所示:
修改后保存,用 chenjiafa 账户登录后,直接获取的就是 root 帐号的权限。
==========================================================================
[su 命令详解]
这个命令非常重要,它可以使一个一般用户拥有超级用户或其他用户的权限,也可以使
超级用户以一般用户的身分做些事情。但一般用户使用该命令时必须有超级用户或其他
用户的口令。如果要退出当前用户的登陆,可以输入 exit。
1.作用
su 的作用是变更为其它使用者的身份,需要键入该使用者的密码(超级用户除外)。
2.格式
su [选项]… [-] [USER [ARG]…]
3.主要参数
-f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于 csh 或 tcsh 两种 Shell。
-l , –login:加了这个参数之后,就似乎是重新登陆为该使用者一样,大部分环境变
量(例如 HOME、SHELL 和 USER 等)都是以该使用者(USER)为主,并且工作目录也
会改变。假如没有指定 USER,缺省情况是 root。
-m, -p ,–preserve-environment:执行 su 时不改变环境变数。
-c command:变更账号为 USER 的使用者,并执行指令(command)后再变回原来使用
者。
USER:欲变更的使用者账号,ARG 传入新的 Shell 参数。
4.应用实例
变更账号为超级用户,并在执行 df 命令后还原使用者。 su -c df root
[sudo 命令详解]
功能说明:以其他身份来执行指令。
语
法:sudo [-bhHpV][-s ][-u <用户>][指令] 或 sudo [-klv]
补充说明:sudo 可让用户以其他的身份来执行指定的指令,预设的身份为 root。在
/etc/sudoers 中设置了可执行 sudo 指令的用户。若其未经授权的用户企图使用 sudo,
则会发出警告的邮件给管理员。用户使用 sudo 时,必须先输入密码,之后有 5 分钟的
有效期限,超过期限则必须重新输入密码。
数:
参
-b 在后台执行指令。
-h 显示帮助。
-H 将 HOME 环境变量设为新身份的 HOME 环境变量。
-k 结束密码的有效期限,也就是下次再执行 sudo 时便需要输入密码。
-l 列出目前用户可执行与无法执行的指令。
-p 改变询问密码的提示符号。
-s 执行指定的 shell。
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以 root 作为新的身
份。
-v 延长密码有效期限 5 分钟。
-V 显示版本信息。