1、先装jdk。
把jdk-6u23-linux-i586.bin 拷到某个目录下,如:/usr/local/jdk目录下面
//运行bin,安装jdk(注意,安装时可能会提示权限不够,那是因为还没有执行权限,用chmod u+x,回车)
./jdk-6u23-linux-i586.bin
//更改环境变量
sudo gedit /etc/profile
加入如下内容:
export JAVA_HOME=/usr/local/jdk/jdk1.6.0_23
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
//更新
source /etc/profile
//用java和javac来测试一下是否已经安装配置成功了。
2、装完jdk后,把eclipse解压出来,重启一下电脑就可以运 行里面的eclipse主程序了。
3、可以用ailurus软件来安装 openJDK,这种方式装完之后可以不 配置环境。
4、增加一个hadoop用户组和一个hadoop用户
sudo addgroup hadoop (增加一个新用户组)
sudo adduser --ingroup hadoop hadoop (增加一个新用户到hadoop用户组中)
su (切换到root用户)
ls -l /etc/sudoers (这一步如果出问题的话,可以用如下的方法解决:
Ctrl+alt+F1进入到全命令窗口,用root用户登陆(如果登陆不了,可以用sudo passwd root这命令来为root用户添加/修改 登陆密码),运行chown 0440 /etc/sudoers,然后再按Ctrl+alt+F7返回)
5、chmod u+w /etc/sudoers
修改sudoers的权限,增加读权限
ls -l /etc/sudoers(查看suoders的权限)
gedit /etc/sudoers
在 root ALL=(ALL) ALL 后面添加:hadoop ALL=(ALL) ALL
恢复sudoers的权限chmod u-w /etc/sudoers
exit(退出root)
6、安装 openssh-server:
sudo apt-get install openssh-server
7、建立 SSH KEY:
su hadoop
ssh-keygen -t rsa -P ""
8、启用 SSH KEY:
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
9、更新一下:
sudo /etc/init.d/ssh reload
(这里面如果出问题的话,切换到root用户,然后在terminate里面用su hadoop进入hadoop用户再执行这条语句)
10、验 证 SSH 的配置:
ssh localhost(结果大致如下:)
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 52:9b:e2:62:93:01:88:e6:46:a8:16:68:52:91:8a:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
……
11、安装配置 hadoop
解压hadoop包,放到某个目录下,如usr/local/hadoop里面(就是说可以用/usr/local/hadoop/bin来访问里面的bin目录),把他的权限赋给hadoop用户。sudo chown -R hadoop:hadoop hadoop
sudo gedit /usr/local/hadoop/conf/hadoop-env.sh
如果打不开,那么直接到/usr/local/hadoop/conf/目录下去找。打开后,在里面添加JAVA_HOME环境变量,如下:
export JAVA_HOME=/usr/local/jdk/jdk1.6.0_23
12、sudo gedit conf/core-site.xml(同样的,打不开也可以到相应的目录下去找)
在<configuration></configuration>里面添加下面的语句:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
13、sudo gedit conf/mapred-site.xml(同样的,打不开也可以到相应的目录下去找)
在<configuration></configuration>里面添加下面的语句:
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
14、格式化 namenode
bin/hadoop namenode -format
(这边如果出问题的话,一般有下面几种情况:
(1)请进入到你安装hadoop的目录下:cd /usr/local/hadoop
(2)切换一下其它用户再试试。)
15、启动 命令:
bin/start-all.sh
(如果想关掉的话,用bin/stop-all.sh)
(这边出问题的话,可以试着用上面说到的方法试试)
16、验证hadoop是否启动成功了
jps
这个命令是用来查看当前的JVM运行了哪几个任务
如果hadoop安装成功 并且启动成功的话,会出现下面几个任务
6605 TaskTracker
6707 Jps
6447 JobTracker
6385 SecondaryNameNode
6109 NameNode
(其实到这里hadoop还没装完,为了下一节的操作,这里还得再配置一下hadoop_home,如下,在/etc/profile文件里面加上下面两句话:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
第一句用来添加$HADOOP_HOME变量,第二句是用来把$HADOOP_HOME变量加到$PATH中去。
)
17、跑几个例子
bin/hadoop dfs -mkdir test-in(创建文件夹,其中,bin/hadoop是一个可执行的文件,dfs可能是第一个参数,-mkdir这是第二个参数,这里的命令和 linux下的一些命令相同,有一个不同的是删除文件:-rmr,而linux命令是:rmdir)
下面,先建两个文件,等会儿用(请先进入到hadoop根目录下):
echo "hello hadoop,this is lingyibin"> testFile1.txt(创建了一个文件,并往里面写入了一些测试数据)
echo "this is the world of lingyibin.wellcome hadoop." > testFile2.txt
然后把这两个文件拷到test-in里面(其实可以直接把这两个测试文件建在test-in里面,这里只是为了让大家熟悉-copyFromLocal这个参数)
bin/hadoop dfs -copyFromLocal /testFile1.txt test-in
bin/hadoop dfs -copyFromLocal /testFile2.txt test-in
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
用下面这个命令查看一下是否已经拷进入了。
bin/hadoop dfs -ls test-in
查看测试文件里面的内容
bin/hadoop dfs -cat test-in/test_file1.txt
bin/hadoop dfs -cat test-in/test_file*.txt
创建一个文件夹
bin/hadoop dfs -mkdir test-in2
查看一下是否在
bin/hadoop dfs -ls
把它删除
bin/hadoop dfs -rmr test-in2
查看一下是否真删除了
bin/hadoop dfs -ls
(上面这段命令只是为了让大家熟悉创建文件夹和删除文件夹的操作)
18、运行hadoop里面自带的例子,wordcount
bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount test-in test-out(计算)
bin/hadoop dfs -cat test-out/part*(查看结果)
这时会看到它把刚刚创建的两个文件里面单词出现的频率给统计出来了。
运行第二个例子 grep,就是根据一个正则表达式来查找多个文件里面符合特定条件的一个字符串。
bin/hadoop dfs -copyFromLocal conf/*.xml input(先拷)
bin/hadoop jar hadoop-*-examples*.jar grep input output 'dfs[a-z.]+'
bin/hadoop dfs -cat output/part*(查看结果)
上面的操作有什么用呢?大家可能都能看懂上面的命令,但为什么要这么做,可能就有点迷茫了。
其实hadoop操作的文件和文件夹是看不见的,就是说,你在本地任何目录里面都看不到用bin/hadoop dfs命令创建的文件或文件夹,那些都在云端(其实本次测试中确实只在本地,只是hadoop用自己的方式把它隐藏了),之后连接多台电脑时,就是一个真 正的小云朵了。这时的文件就真在云端了。
我们可以用下面的操作把云端的文件取回本地:
bin/hadoop dfs -get output output
查看一下:
cat output/par*
结果和刚才的结果是一样的。
19、联机操作
先配置一下:
sudo gedit /etc/hosts
在里面添加几行数据
192.168.1.133 master(保证一个主机名对应一个 IP,这里192.168.1.133是本机地址,根据实际情况来改,下面的ip地址也是根据实际情况来定的。)
192.168.1.144 slave1
192.168.1.22 slave2
192.168.1.158 slave3
这之后就可以用master来代表本地主机了。slave1,slave2,slave3来代表其它结点
可以先用本机直接连接其它装了ssh的机子:
ssh hadoop@slave1
然后再输入slave1的hadoop用户的密码就可以了
这时终端会切换到slave1的hadoop用户,这时可以用命令行为所欲为了。
比如:ls列出根目录里面的文件,进入桌面:cd 桌面,mkdir lingyibin。这时slave1的hadoop用户就会在桌面上创建一个lingyibin的文件夹了。rmdir lingyibin,这时就会把它删除了。
接着,如果不想用密码登陆到slave 怎么办?用里面的rsa密钥。
未完,待续。。。